我使用Collation latin1_swedish_ci设置MySQL表。 我用UTF-8字符集编写了我的PHP脚本。这一切都很顺利,直到我发现一个人用非瑞典人的名字输入他们的名字。 名称Helén在数据库中看起来很奇怪,但在网页上看起来还不错。
我的问题是,我可以简单地将我的表的排序从latin1_swedish_ci更改为UTF-8吗?
它确实会导致任何问题吗?
答案 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
这就是我所做的,自从我在本文中提到的所有内容开发一年后,我没有任何问题。