【问题标题】:PHP4 to PHP5 migration character encoding. latin1 vs utf8PHP4 到 PHP5 迁移字符编码。 latin1 与 utf8
【发布时间】:2013-08-12 09:41:14
【问题描述】:

我最近从 PHP 4.3.9 / MySQL 4.1.22 设置迁移到 PHP 5.3.3 / MySQL 5.1.69 设置。我似乎对字符编码有问题。我的数据库排序规则是 latin1_swedish_ci。

每当我通过我的 PHP 脚本在我的表中输入新数据时,数据最终会在 MySQL 中出现乱码,例如:à é ü 结束为 à é ü。

我尝试使用 mysql_set_charset 或 SET NAMES 设置字符集,但似乎都没有任何效果。我不想将表格或代码切换为 utf8,我只是希望当前设置能够正常工作。

已经花了几个小时在网上寻找,但还没有找到解决方案。

非常感谢所有输入。

汤姆

【问题讨论】:

  • 你的 php 文件的编码是什么?你用的是什么mysql库?
  • 如何检查?如果这就是你的意思,我正在使用 php-mysql-5.3.3-23?
  • 在您的 IDE 中,您应该查看 .php 文件的属性,它应该向您显示文件的编码,相同的编码用于 php 字符串。 mysql_set_charset 应该设置为 php 文件的编码。 php-mysql 库也已弃用,不应再使用它(但我猜你的项目很旧,你不想切换)
  • 我没有使用 IDE,开发已经直接在服务器上的 vim 中完成,所以我认为这不是问题。我尝试使用 mysql_set_charset 但似乎没有什么不同。我知道 mysql 库已被弃用,并且会随着时间的推移而改变。不幸的是,在我开始考虑迁移之前,我需要当前设置正常工作。
  • 您可能使用mysql_set_charset将字符集设置为mysql数据库的字符集,但您应该将其设置为php文件的字符集(mysql知道其数据库的编码,但它不知道php 使用的编码)。查找如何在 linux 中检测文件的字符集,如果找到该字符集,请将其与 mysql_set_charset 一起使用,或者您可以尝试 mysql_set_charset('utf8')mysql_set_charset('latin1') 或此列表中的任何一个:dev.mysql.com/doc/refman/5.6/en/charset-charsets.html 这似乎很可能

标签: php utf-8 php4 iso-8859-1 latin1


【解决方案1】:

通过显式启用解决它:default_charset = "iso-8859-1" in php.ini 现在问题已经解决了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-19
    • 1970-01-01
    • 1970-01-01
    • 2016-03-12
    • 2011-10-20
    • 1970-01-01
    • 2012-05-18
    相关资源
    最近更新 更多