不要修复什么没破损

时间:2012-03-04 16:11:26

标签: php mysql utf-8

我已经制作了将utf-8存储在数据库中的代码。

它在浏览器中显示得很好但在数据库中看起来很扭曲。由于功能似乎有效并且看起来我没有遇到处理字符串输入的任何问题,在“修复未破坏的内容”中是否有任何意义,并在数据库中显示像日语一样的utf-8字符? / p>

我不搜索数据库,因为无论如何都要对字符串进行序列化。

2 个答案:

答案 0 :(得分:1)

您必须指定查询的文本编码,例如,您要发送到MySQL

SET NAMES `utf8` COLLATE `utf8_unicode_ci`

如果不这样做,MySQL可能会使用与UTF-8不同的服务器默认文本编码来解释您的查询,例如: ISO拉丁。因此,您将在表中使用UTF-8编码的字符串,但MySQL将它们标记为iso-latin。这对您的代码没有太大影响,因为MySQL只会将您的UTF-8字符串返回给您并忽略文本编码。如果您在phpMyAdmin或任何其他应用程序中查看数据,设置连接字符编码,您将最终得到扭曲的字符串。

另一方面,您可以utf8_decode查询字符串,并utf8_encode MySQL提供的结果,不要更改iso-latin的连接文本编码。但是如果你查询使用UTF-8作为默认文本编码的不同MySQL服务器,你将以相反的方式结束同样的问题。所以只需在连接后设置连接的文本编码。

答案 1 :(得分:0)

您使用什么来访问数据库。如果您使用控制台,只需将控制台中的编码设置为utf-8。如果您使用GUI软件,请检查将编码设置为utf-8的选项。您可以尝试“设置名称”以服务客户端编码。