我知道这个问题的定义看起来似乎太没有特异性了,所以我会尝试提供所有相关的数据。
在这个场合,我表现得像个主人。我们有一个针对MySQL的PHP页面。有人对MySQL实例进行了一些操作,这导致了可视化问题字符(ñ,重音符号等)的问题(这就是全部,这是一种谜)。
我已经测试了很多选项,但我认为我缺乏知识会让我失明。我知道这很常见所以也许我们可以建立某种“清单”。
如果我在MySQL实例上输入'status',我会得到:
Server version: 5.5.15 MySQL Community Server (GPL)
Protocol version: 10
Connection: localhost via TCP/IP
Server characterset: utf8
Db characterset: utf8
Client characterset: utf8
Conn. characterset: utf8
TCP port: 3306
UTF8中的所有内容......太棒了!如果我连接HeidiSQL并检查我得到的变量:
character_set_client utf8
character_set_connection utf8
character_set_database utf8
collation_collection utf8_general_ci
collation_database utf8_general_ci
等等。然而,不幸的是,访问该页面返回奇怪的字符为 。 META标签中的内容字符集也是UTF-8。
我知道可以在代码中进行一些修改,以强制连接在某些字符集中发生。但是,除此之外,最令人难以置信的是该页面正在运行。
有人知道服务器中有哪些已经改变以引发这种行为?
一如既往地感谢!
PS:我们对来自服务器配置的方面特别感兴趣。更改客户端的源代码是我们想要避免的。
答案 0 :(得分:2)
HTTP标头怎么样?如果标题中是字符编码定义,那么元定义将不会被应用。
答案 1 :(得分:2)
如果您的代码将数据输入MySQL而未将字符集设置为UTF,则可能会导致您的问题:
连接到DB和DB表后,运行:
mysql_set_charset ( 'utf-8' );
PHP和MySQL之间的默认通信字符集仍然不是UTF-8。