如何检测字符串是否已经被utf8编码?

时间:2016-10-13 09:13:45

标签: python python-2.7 character-encoding mojibake

我有一些像这样的字符串:

u'Thaïlande'

这是“Thaïlande”,我不知道它是如何被编码的,但是我需要将它带回“Thaïlande”,然后进行URL编码。

有没有办法猜测字符串是否已经用Python 2编码?

1 个答案:

答案 0 :(得分:3)

你拥有所谓的Mojibake。您可以使用统计分析来查看在UTF-8字节的典型组合中是否存在异常数量的Latin-1字符,或者其中是否存在任何CP1252特定字符。

如果检测到Mojibake,已经存在一个为您执行此操作的程序包修复损坏:ftfy

  

ftfy的目标是接受错误的Unicode并输出良好的Unicode,以便在支持Unicode的代码中使用。

  

ftfy.fix_encoding()函数将查找mojibake的证据,并且在可能的情况下,它将撤消生成它的过程以获取应该存在的文本。

     

这听起来不可能吗?它真的不是。 UTF-8是一个设计良好的编码,当它被误用时很明显,而一串mojibake通常包含恢复原始字符串所需的所有信息。