gpt4 book ai didi

php - cakephp 从 5.4 迁移到 5.3 时出现 mysql 编码问题

转载 作者:行者123 更新时间:2023-11-29 23:16:09 25 4
gpt4 key购买 nike

我有一个使用 CakePHP 在 PHP 5.4.35 中开发的项目,当我将一些 unicode 字符串插入数据库时​​,

Example : Bệnh suy giảm trí nhớ

插入数据库后,这是记录的数据库内容:

Bệnh suy giảm trí nhớ

如果我使用 php 5.4,它会在网站上完美显示:

Bệnh suy giảm trí nhớ

我还为此项目开发了一个json格式的api,当我获取此数据时,api响应是:B\u1ec7nh suy gi\u1ea3m tr\u00ed nh\u1edb当客户端(移动客户端)获取该数据并显示时,与网站显示完全一致。

但是当我转移到使用 php 5.3.23 的主机时,它会像在数据库上一样显示在网站上:

Bệnh suy giảm trí nhớ

And the api response : B\u00e1\u00bb\u2021nh suy gi\u00e1\u00ba\u00a3m tr\u00c3\u00ad nh\u00e1\u00bb\u203a It is dislayed : Bệnh suy giảm trí nhớ on mobile device (which displayed perfectly if I use php5.4 for api)

;

然后我尝试从数据库获取它后使用php的utf8_decode函数,这是结果:

utf8_decode($record);

B��?nh suy giảm trí nh��?

我想也许这个字符串在php5.4中插入到mysql之前被编码,然后在从数据库获取它之后立即解码,但是在php5.3中它在插入和从数据库获取时保留该字符串。而且php 5.3和5.4中utf8的编码器、解码器是不同的???我猜。

我正在使用cakephp 2.5.3,它使用PDO从数据库插入和获取数据我已经尝试了所有方法来更改字符集,整理....但它没有效果,例如:PDO -> exec('设置名称 utf8'), PDO -> exec('设置名称 utf8 collat​​e utf8_unicode_ci'); ....我还设置了 header、html 元标记的字符集....

我的数据库在两种环境中都使用 utf8_unicode_ci 排序规则数据库版本没有区别只是我找不到解决问题的方法,所以如果有人知道这个问题请给我一些解决方案谢谢

最佳答案

问题是:我在php5.3托管环境中设置了encoding = utf8,但在php5.4(开发环境)中我对其进行了注释,因此当我将数据库从开发环境移动到产品环境时,会出现此问题。只需在 2 环境中的数据库配置中设置相同的编码选项,代码就可以完美运行

关于php - cakephp 从 5.4 迁移到 5.3 时出现 mysql 编码问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27791439/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com