使用MySQL进行编码问题(和基础知识)

时间:2012-02-27 18:19:24

标签: php mysql iis

我知道这个问题的定义看起来似乎太没有特异性了,所以我会尝试提供所有相关的数据。

在这个场合,我表现得像个主人。我们有一个针对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:我们对来自服务器配置的方面特别感兴趣。更改客户端的源代码是我们想要避免的。

2 个答案:

答案 0 :(得分:2)

HTTP标头怎么样?如果标题中是字符编码定义,那么元定义将不会被应用。

答案 1 :(得分:2)

如果您的代码将数据输入MySQL而未将字符集设置为UTF,则可能会导致您的问题:

连接到DB和DB表后,运行:

mysql_set_charset ( 'utf-8' );

PHP和MySQL之间的默认通信字符集仍然不是UTF-8。