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

Reply via email to