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