如何正确设置文件,数据库,连接等的编码?

时间:2011-03-01 17:32:52

标签: php mysql encoding character-encoding phpmyadmin

我正在将mysql数据库从一个站点迁移到另一个站点。

它的编码:utf8

其连接编码:utf8_unicode_ci

该网站的php文件中使用的编码:utf-8 without BOM

该网站中每个页面的标头中的编码:utf-8

该网站的一切正常。

然后我使用phpmyadmin导出数据库。 它生成了一个.sql文件,用utf-8编码,当我打开它时一切都很好。

然后我将该文件复制到新网站,该网站对所有内容使用相同的编码,然后将其导入。

当我显示来自旧网站的数据时,在新网站中,通过网页显示数据已损坏。例如:™=>

如果我将浏览器的编码从utf-8转到iso-8859-1,我会看到正确的符号。

新网站中的其他所有内容都运行良好,将内容保存到数据库并将其拉回后,我没有编码问题。唯一奇怪的是,当我浏览存储的数据时,phpmyadmin会显示破碎的字符。但是在网站上显示内容时我没有这个问题。

我使用两个不同的程序进行导入:phpmyadmin和webmin。

所以我不知道这里有什么问题,有什么想法吗?

我应该如何配置编码,以免发生这种情况?

3 个答案:

答案 0 :(得分:2)

也许在第一个站点中你没有设置连接编码(参见php中mysql_client_encoding()的输出)。 如果这是您以错误格式存储数据的问题,并且您还使用相同的错误行为将其正确转换回来。

P.S。 utf8_unicode_ci不是编码,是排序规则(如何排序字符串)

答案 1 :(得分:1)

有一个非常好的FAQ on charsets and encodings in PHP

答案 2 :(得分:0)

这发生在我之前的一个旧网站上,它是一个不同的整理,所以一旦你试图将它改为utf8,它就会显示出奇怪的符号。

有时phpmyadmin中的后端显示奇怪的代码,但网站显示正常。