0

我使用 Collat​​ion latin1_swedish_ci 设置了一个 MySQL 表。我已经用 UTF-8 字符集编写了我的 PHP 脚本。一切都很顺利,直到我发现有人用非瑞典字符输入了他们的名字。海伦这个名字在数据库中看起来很奇怪,但在网页上看起来还不错。

我的问题是,我可以简单地将我的表的排序规则从 latin1_swedish_ci 更改为 UTF-8 吗?

它实际上会导致任何问题吗?

4

1 回答 1

-1

您可以通过添加来做到这一点

$db->set_charset("utf8"); // MySQL
mb_internal_encoding("UTF-8"); // Set PHP encoding
header("Content-Type: text/html; charset=utf-8"); // Prevent incorrect encoding in Browser

在顶部并使用转义每个参数

$param=$db->escape_string($param);

然后 MySQL/PHP 将为您处理与编码相关的所有内容。当你这样做时,你所有的东西都将是 UTF-8。

您的名称问题可能与 header() 命令有关,这意味着浏览器选择了除 PHP 之外的另一个字符集。您可以通过以下方式修复数据:

$data=utf8_encode($data);

如果产生不好的结果,试试这个:

$data=utf8_decode($data);

之后,一切看起来都很好。

如果您想让 UTF8 成为默认字符集,请考虑在 [mysqld] 中的 my.cnf 中添加以下内容:

# Set UTF-8 as standard
collation-server = utf8mb4_general_ci
init-connect='SET NAMES utf8mb4'
character-set-server = utf8mb4

这就是我所做的,自开发一年以来,我在这篇文章中提到的所有内容都没有遇到任何问题。

于 2013-06-30T11:48:25.123 回答