【发布时间】: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