【发布时间】:2013-06-09 20:08:41
【问题描述】:
场景:用于编辑产品详细信息的 html 文档编码为 ISO-8859-1,并将 POST 数据发送到 PHP 文件(也编码为 ISO-8859-1)。该 PHP 文件又具有 mysql_real_escape_string 清理输入的函数。数据库/mysql 服务器字符集是 UTF-8。问题是当 POST 字符串中包含斯堪的纳维亚字母 (ä,ö,å) 时,mysql_real_escape_string 返回一个空字符串。
我试图用 utf8_encode/decode 覆盖它,但它不起作用。
现在,如果我将 html&php 文件更改为使用 UTF-8,保存工作正常(如预期的那样),但之前保存的所有产品数据看起来都已损坏,并且有数千个产品行。
什么是最简单的解决方案?更改数据库字符集?运行编码函数来转换数据库中的条目?
【问题讨论】:
-
“被编码为 ISO-8859-1”——为什么?现在已经不是 1990 年代了。
-
请注意,
mysql_xxx()函数已被弃用。我建议您切换代码以使用较新的 PDO 或 mysqli 库。 -
代码库实际上来自 90 年代。爱它。
标签: php mysql character-encoding