我有一个使用utf8
编译指示的perl脚本,出于各种原因,它在utf8中完成大部分操作是最实际的。但是,我需要访问一个mysql数据库,其中所有表都是latin1。我应该怎么做?使用utf8从perl脚本访问latin1 mysql数据库
“伪”的位:
use utf8;
use DBI;
my $dbh = DBI->connect("DBI:mysql:$database;host=$server", $user, $pw);
my $sth = $dbh->prepare(
"SELECT recipe.ingredients
FROM recipe
WHERE recipe.id=?");
$sth->execute('rødgrød');
如果我把use utf8;
并保存在我的latin1脚本,这按预期工作。
(我从来不需要插入到表,从它刚读,但我不认为这真的很重要)
谢谢!它的工作原理,但我有点困惑,为什么会这样。 'perldoc DBD :: mysql'表示'这个属性确定DBD :: mysql是否应该假设存储在数据库中的字符串是utf8。'但事实并非如此。另外,我应该担心这个提示'这个选项是试验性的,可能会在未来版本中改变。'? – Villemoes 2011-04-30 18:10:37
关于做实验:已经很多年了,太多的代码依赖于它。现在没有更好的方法。关于其他一点:似乎这个变量(mysql_enable_utf8)仍然告诉驱动程序必要时将字符串解码为UTF-8。没有在代码中找到它,因为驱动程序部分是二进制的。 – 2011-04-30 19:07:28