如何从SQL select语句返回的字符串被编码?

时间:2013-01-10 22:34:04

标签: php mysql character-encoding

这是一个存储在MySQL数据库中的示例字符串,在Linux服务器上运行:™

这是单个TM字符,在0x2122中表示为UTF-16BE0xE284A2表示为UTF-8

数据库表以utf8-unicode-ci编码。我在另一台Linux服务器上运行PHP,它使用mb_internal_encoding的内部编码(由ISO-8859-1报告),它使用与UTF-8相同的字符编码。

当我运行SQL查询以获取字符串时,它返回0x0099,这是Windows-1252中的表示。

怎么会发生这种情况,如何修复它以返回更合理的代码页呢?

1 个答案:

答案 0 :(得分:0)

您观察到的行为是由于默认的MySQL客户端字符集。

您可以覆盖默认值,并指定要用于客户端连接的字符集。如果您使用的是mysqli,请执行以下操作:

$mysqli->set_charset('utf8');

请参阅:

http://php.net/manual/en/mysqlinfo.concepts.charset.php

http://dev.mysql.com/doc/refman/5.5/en/charset-connection.html