所以,我目前有这个问题 - 我有一个sql db转储,其中的字符编码是latin1,但文件中有一些看起来像Ä(应该是ā)Ä«(应该是ī)的字符)Å¡(应该是š)Ä“(应该是ē)等。如何将这些字母转换回原来的utf8。?
文件中的字符< - >应该是什么< - >字节
Ä“< - > ē< - > 5
Ä< - > ā< - > 2
Å¡< - > š< - > 4
Ä«< - > ī< - > 4
答案 0 :(得分:2)
如果您看到多个字节应该是单个字符,那么很可能它已经 UTF-8。请记住,ISO-8859-1是每字节单字节编码,而UTF-8可以占用多个字节 - 而任何非ASCII字符 需要多个字节。
我建议您在支持UTF-8的文本编辑器中打开文件,然后在那里查看。
答案 1 :(得分:0)
应在导入数据和读出数据的连接上设置编码。如果它们都设置为UTF-8,您将不会遇到任何问题。
如果您使用latin1连接导入它们,稍后使用UTF-8读取它,那么您将陷入困境。
PHP内部只处理latin1,但这对您来说不是一个问题。
如果您已经错误地导入了数据,您会看到很多?或者(钻石+?)我认为你的输出。
但基本上,当连接frmo PHP时,请务必首先调用SET NAMES 'utf8'
,然后查看是否有效。
如果数据仍然错误,您可以使用PHP函数utf8_encode / utf8_decode
来转换有问题的数据。
在工作场景中,不应该使用它们。