MySQL的编目问题(以及基础知识)


Codification problems (and basics) with MySQL

我知道这个问题的定义可能看起来过于非特异性,所以我会尝试提供所有相关的数据。

在这个地方,我表现得像个招待员。我们有一个针对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。