php - 不同版本的 PHP、Apache 和 MySQL 之间的字符编码问题

标签 php mysql apache character-encoding

我最近将存储为 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/

相关文章:

java - 在 Java 中提取内存中的 tar.gz 文件

php - 在 PHP 中比较 2 个图像

php - 亚马逊网络服务 phpmyadmin : The mbstring extension is missing

mysql - 我应该在单次选择后提交吗

mysql - 尝试使用 case 语句为列设置不同的值

Apache LocationMatch 匹配以...开头的 url

php - htaccess 基于查询字符串的 url

php mysql select 语句

javascript - 当表单未使用 php javascript 选择所有复选框时如何修复 "Successfully Added"消息

apache - 如何在没有负载平衡的情况下为单个 apache 服务器实现多个 tomcat 实例?