我有一个奇怪的问题。我在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}}让那些阅读文件的人感到困惑。
建议?
答案 0 :(得分:0)
UTF-8中的度数符号恰好对应于Latin-1编码中的字符°。您没有正确设置数据库连接编码,因此数据库错误解释了您发送它的字符。连接到数据库后,将mysql_set_charset
设置为'utf8'
。
有关更深入的信息,请参阅Handling Unicode Front To Back In A Web App和What Every Programmer Absolutely, Positively Needs To Know About Encodings And Character Sets To Work With Text。