我使用Perl ORM Rose :: DB :: Object和MySQL表/列整理utf8_general_ci
。代码保存数据:为什么中文字符在MySQL和Perl中显示不正常?
Motorcycle->new(
type => $self->param('type'),
brand => $self->param('brand'),
color => $self->param('color')
)->save;
代码为Mojolicious检索数据(该代码相当于utf8::decode
):
<td><%= Mojo::ByteStream->new($cycle->type)->decode('utf-8') %></td>
<td><%= Mojo::ByteStream->new($cycle->brand)->decode('utf-8') %></td>
<td><%= Mojo::ByteStream->new($cycle->color)->decode('utf-8') %></td>
中国人物看起来罚款在我的应用程序,但他们在phpMyAdmin看起来很奇怪。如果我将这些字符保存在phpMyAdmin中,它们在phpMyAdmin中会很好,但在我的应用程序中看起来很奇怪。
我已经在SQLite和Firefox SQLite插件中对它进行了测试,并且Firefox SQLite附加组件和我的应用程序中的字符都很好看。
我认为这是一个服务器问题。如果我将Perl与PHP融合在一起,它可能会变成一场灾难。
感谢您的帮助。
解析为以下:
__PACKAGE__->use_private_registry;
__PACKAGE__->default_connect_options(mysql_enable_utf8 => 1);
__PACKAGE__->register_db(
driver => 'mysql',
database => 'test',
host => 'localhost',
username => 'root',
password => '',
它重要在加入这一行:
__PACKAGE__->default_connect_options(mysql_enable_utf8 => 1);
没有解码读取时回数据所需。
由于这些编码+显示问题,检查`字符集=您的应用程序和的phpmyadmin的`MIME参数。确保默认值在Apache配置,php.ini,您的应用程序和phpmyadmin中都是固定的。检查
我已经发布了一个基于我认为是最可能的问题的答案。如果这不起作用,那么如果您提供了文本如何看起来“很奇怪”的具体示例,这将有所帮助。 – 2011-02-15 00:38:01