Alex Bernier wrote:
> Hello,
> 
> I use DBI 1.605, the DBD MySQL driver 4.007, Perl 5.10.0, MySQL 5.1.41 (on a 
> Debian Lenny).
> 
> Here is my script :
> 
> <script>
> use DBI;
> 
> $DB_name    = 'xxx';
> $DB_user    = 'xxx';
> $DB_pwd     = 'xxx';
> my $dbh;
> $dbh = DBI->connect("dbi:mysql:dbname=$DB_name","$DB_user","$DB_pwd", 
> {mysql_enable_utf8=>1});
> $dbh->do("set NAMES 'utf8'");
> my $sth = $dbh->prepare("select foo from bar");
> $sth->execute();
> my $line = $sth->fetchrow_hashref;
> print $line->{foo};
> </script>
> 
> This script give a string encoded in Latin1. Because my database use UTF8, I 
> am waiting a string in UTF8. Am I wrong, or is the behaviour of this script 
> not correct ?
> 
> Here are some MySQL variables :
> Variable_name   Value
> character_set_client    utf8
> character_set_connection        utf8
> character_set_database  utf8
> character_set_filesystem        binary
> character_set_results   utf8
> character_set_server    utf8
> character_set_system    utf8
> character_sets_dir      /usr/share/mysql/charsets/
> 
> And in my MySQL config file : 
> [mysqld]
> init-connect = 'SET NAMES utf8'
> character-set-server=utf8
> collation-server=utf8_general_ci
> character_set_client=utf8
> default-character-set = utf8
> 
> 
> 
> When I look a dump file in hexadeciaml of my base, values are encoded in 
> UTF8... 
> In the dump :
> SET @saved_cs_client     = @@character_set_client;
> SET character_set_client = utf8;
> CREATE TABLE `bar` ( [...] ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
> SET character_set_client = @saved_cs_client;
> 
> Thanks in advance for any hint,
> 
> Alex
> 
> 

I no longer use mysql but in the past I successfully used it with UTF-8
encoded data. The only thing I'd question from the above is how do you
know mysql is returning Latin1 compared with UTF-8 encoded data in the
above example? You print it to stdout and if that does not have the
UTF-8 layer on it it will be output differently (e.g., binmode(STDOUT,
":utf8")).

Martin
-- 
Martin J. Evans
Easysoft Limited
http://www.easysoft.com

Reply via email to