繁体   English   中英

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

[英]How does a string returned from a SQL select statement get encoded?

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

这就是单个TM字符,其被表示为0x2122UTF-16BE ,或0xE284A2UTF-8

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

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

那怎么会发生?如何解决它,以更合理的代码页返回?

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

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

$mysqli->set_charset('utf8');

看到:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM