在 Catalyst 应用程序或模板中定义的数据具有正确的编码并且显示良好,但从数据库Latin1
中所有非?
. 我想问题应该在模型类中,就是这样:
use strict;
use base 'Catalyst::Model::DBIC::Schema';
__PACKAGE__->config(
schema_class => 'vhinnad::Schema::DB',
connect_info => {
dsn => 'dbi:mysql:test',
user => 'user',
password => 'password',
{
AutoCommit => 1,
RaiseError => 1,
mysql_enable_utf8 => 1,
},
'on_connect_do' => [
'SET NAMES utf8',
],
}
);
1;
我在这里看不到任何缺陷,但一定有什么地方不对劲。我也将我的模式与测试脚本一起使用,数据编码良好,输出正确,但在 Catalyst 应用程序中我没有正确编码。问题可能出在哪里?
编辑
为了将来参考,我把解决方案放在这里:我混合了新旧风格的连接信息。
旧风格就像(dsn, username, passw, hashref_options, hashref_other options)
新样式是(dsn => dsn, username => username, etc)
,所以正确的是使用:
connect_info => {
dsn => 'dbi:mysql:test',
user => 'user',
password => 'password',
AutoCommit => 1,
RaiseError => 1,
mysql_enable_utf8 => 1,
on_connect_do => [
'SET NAMES utf8',
],
}