我正在将mysql数据库从一个站点迁移到另一个站点。
它的编码:utf8
其连接编码:utf8_unicode_ci
该网站的php文件中使用的编码:utf-8 without BOM
该网站中每个页面的标头中的编码:utf-8
该网站的一切正常。
然后我使用phpmyadmin导出数据库。 它生成了一个.sql文件,用utf-8编码,当我打开它时一切都很好。
然后我将该文件复制到新网站,该网站对所有内容使用相同的编码,然后将其导入。
当我显示来自旧网站的数据时,在新网站中,通过网页显示数据已损坏。例如:™=>
如果我将浏览器的编码从utf-8转到iso-8859-1,我会看到正确的符号。
新网站中的其他所有内容都运行良好,将内容保存到数据库并将其拉回后,我没有编码问题。唯一奇怪的是,当我浏览存储的数据时,phpmyadmin会显示破碎的字符。但是在网站上显示内容时我没有这个问题。
我使用两个不同的程序进行导入:phpmyadmin和webmin。
所以我不知道这里有什么问题,有什么想法吗?
我应该如何配置编码,以免发生这种情况?
答案 0 :(得分:2)
也许在第一个站点中你没有设置连接编码(参见php中mysql_client_encoding()的输出)。 如果这是您以错误格式存储数据的问题,并且您还使用相同的错误行为将其正确转换回来。
P.S。 utf8_unicode_ci不是编码,是排序规则(如何排序字符串)
答案 1 :(得分:1)
答案 2 :(得分:0)
这发生在我之前的一个旧网站上,它是一个不同的整理,所以一旦你试图将它改为utf8,它就会显示出奇怪的符号。
有时phpmyadmin中的后端显示奇怪的代码,但网站显示正常。