Bug#318058: lidbdb-mysql-perl and UTF8

Gunnar Koppel wk at hot.ee
Thu Dec 4 13:32:27 UTC 2008


Terr!

2007/9/28 gregor herrmann <gregor+debian at comodo.priv.at>:

>> > I made a bug report some time ago:
>> > http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=318058
>> > I just wanted to add that i tried today new version (3.0002-1) and it
>> > does not solve the problem.
>> Can you try the version 4.004 that I just uploaded to unstable? (It will be
>> available tomorrow on the mirrors)
>
> May I kindly ask again if you can still reproduce this problem with
> version 4.004 or greater?

I still have problem with lidbdb-mysql-perl and UTF8. I made simple
testcase for reproducing, so you could easily test it out:

#!/usr/bin/perl

use strict;
use warnings;
# use utf8;
# use locale;
# binmode STDIN, ":utf8";
# binmode STDOUT, ":utf8";
use DBI;

my ($db, $user, $password, $hostname, $data_source) = ();
	$db = "utf8";
	$user = "";
	$password = "";
	$hostname = "localhost";
	$data_source = "DBI:mysql:database=$db;host=$hostname";
my $dbh = DBI->connect($data_source, $user, $password) || die "no connection\n";

my (@data) = $dbh->selectrow_array("SELECT * FROM utf8.utf8 LIMIT 1");

print "@data\n";

__END__

Database creation:

CREATE database utf8;
use utf8
SET character_set_client = utf8;
CREATE TABLE `utf8` (
  `id` int(10) unsigned NOT NULL auto_increment,
  `string` varchar(255) collate utf8_estonian_ci NOT NULL default '',
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=35610 DEFAULT CHARSET=utf8
COLLATE=utf8_estonian_ci;

Row of data:
INSERT INTO utf8.utf8 (id, string) values (1, 'šš ðð');

printout should be:
1 šš ðð

but is:
1 �� �

I tried output through Data::Dumper too and got:
$VAR1 = [
          [
            '1',
            '�� ��'
          ]
        ];


As you can see in my test script i tried to run it in different
pragmas (use utf8 and use locale), but it did not help too. When i
enable STDOUT binmode, i get proper output of second pair (ðð), but
first is still "foggy". If i use lidbdb-mysql-perl version 2.9006 it
works fine.

I hope you can find out what is wrong using this testcase.

I have this problem in my Debian server, but i tried it now in my
Kubuntu notebook, here i have such software:

mysql status:
Current database:       utf8
Current user:           wanradt at localhost
SSL:                    Not in use
Current pager:          stdout
Using outfile:          ''
Using delimiter:        ;
Server version:         5.0.51a-3ubuntu5.4 (Ubuntu)
Protocol version:       10
Connection:             Localhost via UNIX socket
Insert id:              1
Server characterset:    utf8
Db     characterset:    utf8
Client characterset:    utf8
Conn.  characterset:    utf8
UNIX socket:            /var/run/mysqld/mysqld.sock
Uptime:                 13 days 20 hours 50 min 29 sec


perl -V (first lines):
Summary of my perl5 (revision 5 version 8 subversion 8) configuration:
  Platform:
    osname=linux, osvers=2.6.15.7, archname=i486-linux-gnu-thread-multi
    uname='linux palmer 2.6.15.7 #1 smp thu sep 7 19:42:20 utc 2006
i686 gnulinux '


libdbi-perl
Version: 1.601-1


locale:
LANG=et_EE.UTF-8
LANGUAGE=et_EE:et:en_GB:en
LC_CTYPE="et_EE.UTF-8"
LC_NUMERIC="et_EE.UTF-8"
LC_TIME="et_EE.UTF-8"
LC_COLLATE="et_EE.UTF-8"
LC_MONETARY="et_EE.UTF-8"
LC_MESSAGES="et_EE.UTF-8"
LC_PAPER="et_EE.UTF-8"
LC_NAME="et_EE.UTF-8"
LC_ADDRESS="et_EE.UTF-8"
LC_TELEPHONE="et_EE.UTF-8"
LC_MEASUREMENT="et_EE.UTF-8"
LC_IDENTIFICATION="et_EE.UTF-8"
LC_ALL=


As i pointed, it works fine with version 2.9006

-- 
With best regards,
Kõike hääd,

G


More information about the pkg-perl-maintainers mailing list