我有一些像这样的字符串:
u'Thaïlande'
这是“Thaïlande”,我不知道它是如何被编码的,但是我需要将它带回“Thaïlande”,然后进行URL编码。
有没有办法猜测字符串是否已经用Python 2编码?
答案 0 :(得分:3)
你拥有所谓的Mojibake。您可以使用统计分析来查看在UTF-8字节的典型组合中是否存在异常数量的Latin-1字符,或者其中是否存在任何CP1252特定字符。
如果检测到Mojibake,已经存在一个为您执行此操作的程序包和修复损坏:ftfy
:
ftfy的目标是接受错误的Unicode并输出良好的Unicode,以便在支持Unicode的代码中使用。
和
ftfy.fix_encoding()函数将查找mojibake的证据,并且在可能的情况下,它将撤消生成它的过程以获取应该存在的文本。
这听起来不可能吗?它真的不是。 UTF-8是一个设计良好的编码,当它被误用时很明显,而一串mojibake通常包含恢复原始字符串所需的所有信息。