我将我的应用程序从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后,编码错误的原因是什么?
答案 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