如何将latin1转换为utf8字符编码?

时间:2011-03-30 15:37:14

标签: php

所以,我目前有这个问题 - 我有一个sql db转储,其中的字符编码是latin1,但文件中有一些看起来像Ä(应该是ā)Ä«(应该是ī)的字符)Å¡(应该是š)Ä“(应该是ē)等。如何将这些字母转换回原来的utf8。?

文件中的字符< - >应该是什么< - >字节

Ä“< - > ē< - > 5

Ä< - > ā< - > 2

Å¡< - > š< - > 4

Ä«< - > ī< - > 4

2 个答案:

答案 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来转换有问题的数据。

在工作场景中,不应该使用它们。