mysql_query为带有重音字符的特殊字符添加前缀

时间:2012-09-24 14:11:29

标签: mysql character-encoding

我有一个奇怪的问题。我在Windows上运行MySQL 5.1(但生产服务器是Debian Linux,同样的问题出现了。)

我正在使用mysql_query()来更新表。描述字段偶尔可以包含特殊字符,如度数符号,加号/减号等。

我在发送到mysql_query()之前查看了查询,看起来很好。我通过mysql客户端运行确切的查询,它工作正常。但是将查询传递给mysql_query()导致特殊字符的前缀加上重音A:

在365 - 383°F的3小时内沐浴。

不确定这里到底发生了什么,有什么想法吗?我用Google搜索并尝试将所有内容设置为UTF-8等等 - 无论我能找到什么。

我没有选择,转换为html实体不是一个选项,因为此文本转换为PDF和其他技术(如Access 97)中的各种输出无法正确呈现实体 - 因此打印输出{{ 1}}让那些阅读文件的人感到困惑。

建议?

1 个答案:

答案 0 :(得分:0)

UTF-8中的度数符号恰好对应于Latin-1编码中的字符°。您没有正确设置数据库连接编码,因此数据库错误解释了您发送它的字符。连接到数据库后,将mysql_set_charset设置为'utf8'

有关更深入的信息,请参阅Handling Unicode Front To Back In A Web AppWhat Every Programmer Absolutely, Positively Needs To Know About Encodings And Character Sets To Work With Text