虽然我设置我的web应用程序完全符合UTF8,但我忘了在PDO设置中指定UTF-8字符集.碰巧,这些汉字在数据库/phpmyadmin(你好)中看起来很奇怪,尽管在我的web应用程序中它们看起来不错。
由于我最终知道了解决方案(在PDO连接设置中添加字符集),我想知道是否有一种简单的方法可以将我的旧数据转换为适当的UTF-8。我在Stackoverflow上找到了执行此任务的以下代码,但它解决了每个列、每个表的编码问题列。
UPDATE tablename SET
field = CONVERT(CAST(CONVERT(field USING latin1) AS BINARY) USING utf8);是否存在一种对整个数据库执行这种转换的方法?
我精确地指出,我的MySQL数据库/表已经配置为使用字符集UTF-8。
谢谢!
发布于 2016-10-01 18:02:30
你有“双重编码”。我相信这些步骤“导致”了这一切:
你好)被正确编码为utf8 (E4BDA0 E5A5BD)。CHARACTER SET正确为utf8 (或utf8mb4)。(可能是latin1,结果是一样的。)INSERTed。这就是出错的地方。声明所存储的数据被编码为latin1,这6个字符:十六进制E4 BD A0 E5 A5 BD。在存储过程中,它们被转换为列字符集(utf8),成为C3A4 C2BD C2A0 C3A5 C2A5 C2BD。SELECTed为utf8。但是,到现在为止,这给你带来了麻烦:你好。有两件事是错的,两者都需要同时修复:
$db = new PDO('dblib:host=host;dbname=db;charset=UTF8', $user, $pwd);的操作。UPDATE看起来很适合这种情况。https://stackoverflow.com/questions/39790588
复制相似问题