【发布时间】:2015-01-10 09:46:44
【问题描述】:
我在 perl 脚本中使用带有漂亮 ő 和 ű 字符的匈牙利语,带有 DBI 和 MySQL。所有的数据库编码都是 UTF8,我到处使用 utf8。表是utf8_general_ci编码,行也是utf8_general_ci。
我试图将表和行编码更改为 utf8_hungarian_ci 和 utf8_unicode_ci。这无济于事。
当我使用 PHPMyAdmin 插入行时,似乎一切正常,当我在控制台中签入时也很好。只有当我尝试在 Perl DBI 连接中使用时,只有这种情况我才会看到“?”字符而不是 'ő'、'Ő'、'ű' 和 'Ű' 字符。
这是我的 perl 脚本:
use uft8;
use DBI
my $db = DBI->connect("dbi:mysql:dbname=...", "user", "passwd",
{mysql_enable_utf8 => 1}) || die $DBI::error;
$db->do("INSERT INTO mytable (name) VALUES ('őűŐŰ')");
my $dbh = $db->prepare("SELECT name FROM mytable;");
$dbh->execute;
while (my @this = $dbh->fetchrow_array) {
print $this[0]."\n";
}
怎么了? DBI 是否有特殊的参数或设置?或者
【问题讨论】:
-
插入前运行
SET NAMES UTF8 -
根据文档,这应该由 mysql_enable_utf8 完成,但我不是 DBI 专家。
标签: mysql perl encoding utf-8 dbi