【发布时间】:2014-12-12 23:18:33
【问题描述】:
我不确定这是错误还是我做错了什么:
我每次读取数据
open my $fh, "<:encoding(iso-latin1)", $file or die "Failed to open $file: $!";
$file 肯定是 iso-latin1。
然后我有一个mysql表
ENGINE=InnoDB AUTO_INCREMENT=53072 DEFAULT CHARSET=latin1
我检查连接设置:
$dbh->prepare("show variables");
这给了
character_set_client, latin1
character_set_connection, latin1
character_set_database, latin1
character_set_filesystem, binary
character_set_results, latin1
character_set_server, latin1
character_set_system, utf8
所以对我来说一切都应该没问题:
- 表是 iso-latin1
- 数据是 iso-latin1(现在应该是 perl 内部字符格式)
- 连接信息显示正确的设置
- 输出到 STDOUT(终端是 iso-latin1)是正确的
但是:表中的数据是纯 utf8(在这种情况下很可能是 perl 的内部格式)。
我错过了什么,这可能是 DBI/DBD::mysql 中的错误吗?
【问题讨论】: