Collat​​ion latin1_swedish_ci中的MySQL表可以在不影响PHP代码的情况下进行更改吗?

时间:2013-06-30 10:10:37

标签: php mysql collation

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

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

它确实会导致任何问题吗?

1 个答案:

答案 0 :(得分:-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

这就是我所做的,自从我在本文中提到的所有内容开发一年后,我没有任何问题。