UTF8数据库文本无法在cakephp3上运行

时间:2015-11-30 08:28:32

标签: mysql cakephp-3.0

我将我的应用程序从CakePHP 2.7.7升级到CakePHP 3.1.5

旧的应用程序(Cake 2)与UFT-8编码完美配合。但是在CakePHP 3 UTF-8上,来自mysql db的文本显示不正确。

我更改了app.php文件的编码,还更改了db encoding config。

从CakePHP 2更新到3后,编码错误的原因是什么?

1 个答案:

答案 0 :(得分:0)

如果在某些情况下Unicode符文会出现乱码,请尝试将字符集更改为“utf8mb4”。

重要的是要注意,在MySQL上,“utf8”字符集实际上并不编码完整的UTF-8 Unicode符文集。这是出于历史原因(具体而言,当MySQL实现时,UTF-8并未完全定义)。

“utf8mb4”字符集对完整的Unicode符文集进行编码,大部分时间实际上都是您想要的符号。

所有这一切,您必须仔细查看连接的所有字符集设置。 PHP和MySQL具有非常挑剔的字符集交互,如果PHP没有正确告诉MySQL它想要使用的字符集,即使你已经正确地完成了以上所有操作,事情也会破裂。

有关PHP和MySQL字符集的更多信息: http://php.net/manual/en/function.mysql-set-charset.php

这是我最喜欢的“utf8”vs“utf8mb4”资源: https://mathiasbynens.be/notes/mysql-utf8mb4