我最近将存储为 latin1_swedish_ci 的旧 MySQL 数据库转换为 utf8_general_ci。我现在获得了指定 UTF-8 的 HTTP header 、页面上的 HTML 标记,并且数据库中的数据已正确编码为 utf8_general_ci。
在我的测试服务器上一切正常,所以我将更新后的 HTML 文件和 PHP 脚本上传到实时服务器上的临时区域。然后我用测试数据库的导出替换旧的暂存数据库。
现在,暂存站点上有 unicode 实体,而不是每个撇号。
相同的数据库,相同的代码,但它在那里不起作用。
测试服务器和暂存区的区别在于测试服务器是这样的:
测试:
- Apache 2.2.15
- PHP 5.3.2
- MySQL 5.1
分期:(是的,它已经过时了,但它超出了我的控制范围)
- Apache 1.3.37
- PHP 5.2.3
- MySQL 4.1.15
知道是什么原因造成的,而不是登台服务器上的工作吗?
最佳答案
连接编码在这里非常重要。确保在两台服务器上使用相同的编码。例如,通过在连接时将其作为第一个命令发出:
SET NAMES 'utf8';
关于php - 不同版本的 PHP、Apache 和 MySQL 之间的字符编码问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3105491/