我刚接触过严肃的编程,我试图编写一个python程序,在从一个文件读取时遇到了这种形式的字符串:
Î Ëèèèèèèèèèèèèèè
它实际上应该是西里尔文(cp-1251),所以这个字符串是错误编码的受害者(我经过长时间的搜索,在这个站点的帮助下发现的)
使用chardet模块中的检测功能也可以找到它
chardet.detect('Îêåàí Åëüçè - Ìàéæå âåñíà'.decode('utf-8').encode('windows-1252'))
得出:
{'confidence':0.76796972356183,'encoding':'windows-1251'}
完成以下操作后,我就可以得到想要的字符串了
^{pr2}$它给出了:
与
乌尔巴乔夫
分别用于上述字符串。在
我的问题是:有没有办法检测到这样的字符串? 以下是一些我还没有找到纠正方法的字符串:
佐佐木一郎(另类告别)
Yoon K.Lee&Salzburg Kammerp-三»¶À½
⁂晉䤠圠牥潂⁹䬨牡慭牴湯捩删浥硩䴠楡⥮
Ã�Ã�óôåõá üôé ï ãÃ�ìïò Ã�ôáÃ
ìéá áðëÃ� õðüèåóç. 在
非常感谢你的答复。在
好吧,那个西里尔字母串不在cp-1251中。正如你所发现的,它已经被编码了“两次”。很可能有人把cp1251中的二进制字符串当作utf8编码到cp1252或类似的东西。在
任何自动检查都无法查出这一点。在
有效。后者看起来像UTF8,因为它支持单字节和多字节字符,但它不是UTF8。所以又一次做了一些不正确的转换。尝试所有可能的组合,直到一个作品可能是唯一的可能。在
相关问题 更多 >
编程相关推荐