我知道这个问题的定义可能看起来过于非特异性,所以我会尝试提供所有相关的数据。
在这个地方,我表现得像个招待员。我们有一个针对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。
我知道可以在代码中进行一些修改,以强制连接以某些字符集进行。但是,除此之外,最令人难以置信的是,这个页面正在工作。
有人知道benn在服务器中修改了什么来引发这种行为吗?
一如既往地感谢!
PS:我们对服务器配置方面特别感兴趣。我们希望避免更改客户端的源代码
HTTP头呢?如果标头中有字符编码定义,则不会应用元定义。
如果您的代码在没有将字符集设置为UTF的情况下将数据输入MySQL,这可能会导致您的问题:
连接到数据库和数据库表后,运行:
mysql_set_charset ( 'utf-8' );
PHP和MySQL之间的默认通信字符集仍然不是UTF-8。