代码之家  ›  专栏  ›  技术社区  ›  Macha

不同版本的php、apache和mysql之间的字符编码问题

  •  1
  • Macha  · 技术社区  · 14 年前

    我最近把一个老的mysql数据库转换成了utf8通用的。我现在已经得到了指定utf-8的HTTP头、页面上的HTML标记,并且数据库中的数据被正确编码为utf8_-general_-ci。

    它在我的测试服务器上都可以正常工作,所以我将更新的HTML文件和PHP脚本上传到实时服务器上的临时区域。然后我用测试数据库的导出替换旧的临时数据库。

    现在,在临时站点上有Unicode实体,而不是所有的撇号。

    相同的数据库,相同的代码,但在那里不起作用。

    测试服务器和临时区域之间的区别在于测试服务器如下:

    测试:

    • Apache 2.2.15
    • PHP5.3.2
    • MySQL 5.1

    登台:(是的,它已经过时了,但我无法控制)

    • Apache 1.3.37
    • PHP5.2.3
    • MySQL 4.1.15

    知道是什么导致了它,而不是登台服务器上的工作吗?

    2 回复  |  直到 14 年前
        1
  •  2
  •   Emil Vikström    14 年前

    连接编码在这里非常重要。确保在两台服务器上使用相同的编码。例如,通过在连接时将其作为第一个命令发出:

    SET NAMES 'utf8';
    
        2
  •  0
  •   Mark L    14 年前

    确保在每台计算机的my.cnf上设置了以下内容,以便运行mysql:

    [client]
    default-character-set=utf8 
    

    [mysqld]
    default-character-set=utf8