0

在测试我们的 Web 应用程序时发现了一个有趣的问题。

我在 localhost (Windows) 和在线测试服务器 (Linux) 上有应用程序。两者都连接到同一个数据库(在 Linux 服务器上)。当我尝试通过位于 Linux 服务器上的应用程序中的表单编辑一个文本字段时,它会从结果中裁剪变音符号并将其保存到数据库中。但是当我尝试相同的操作时,在 locahost (Windows) 上使用相同的代码时,它会在我编写时保存带有变音符号的整个文本。

我尝试检查 PHP 配置,但两台机器上的配置完全相同。

有谁知道我应该在哪里寻找应该导致什么问题?

4

3 回答 3

1

听起来您的 Windows 机器上的 MySql 实例上的一个或多个字符设置未设置为 UTF8,请尝试执行以下查询:

show variables like '%character%'

您的输出将是 character_encoding 相关的服务器变量,在我的数据库输出上执行:

character_set_client        utf8
character_set_connection    utf8
character_set_database    utf8
character_set_filesystem    binary
character_set_results      utf8
character_set_server        utf8
character_set_system        utf8
character_sets_dir        /usr/share/mysql/charsets/

我最好的猜测是其中一个或多个设置为latin1

此外,您可能想要检查排序规则,即执行此

show variables like '%collation%'

你会得到类似的东西:

collation_connection    utf8_general_ci
collation_database    utf8_general_ci
collation_server        utf8_general_ci
于 2009-05-31T13:19:14.253 回答
0

两台服务器是否以相同的编码提供页面?

在Firefox中,访问页面,右键单击并“查看页面信息”。将有一个编码条目。要使这些正确传输,您需要 UTF-8 或类似的编码。

之后,检查您的数据库设置。您需要将 MySQL 连接设置为使用 UTF8,并且您的表和列也应设置为 utf8。

您可以通过在连接后发出以下查询来设置 mysql 连接字符集:

SET NAMES 'utf8'
于 2009-05-31T11:56:23.687 回答
0

发现在该字段上使用一个过滤器的问题,该过滤器在不同系统上的作用不同。

于 2009-07-24T09:25:50.970 回答