我正在阅读从另一个软件程序导入到excelxml文件中的字符串列表。我不确定excel文件的编码是什么,但我很确定它不是windows-1252,因为当我尝试使用这种编码时,我会遇到很多错误。在
现在给我带来麻烦的一个词是:“Zmysłowska,Magdalena”(注意“l”不是标准的“l”,而是有一个斜杠贯穿其中)。在
我试过几件事,在这里我要提到三件事:
(一)
page = unicode(page, "utf-8")
page = unicodedata.normalize("NFKD", page)
page = page.encode("utf-8", "ignore")
Output: Zmys\xc5\x82owska, Magdalena
Output after print statement: Zmysłowska, Magdalena
(二)
^{pr2}$(三) 什么都不做(不规范化,不解码,不编码)。当它进来的时候,它似乎已经是utf-8了。但是,当我什么也不做时,字符串最后会再次输出以下输出:
Output: Zmys\xc5\x82owska, Magdalena
Output after print statement: Zmysłowska, Magdalena
有没有办法把这个字符串转换成utf-8?在
你的问题不在于你的编码和解码。代码正确地接受UTF-8字符串,并将其转换为NFKD规范化的UTF-8字符串。(您可能希望使用},以防将来使用python3,并使代码更易于阅读,因为}显然是并行的,但您不必这样做;两者是等效的。)
page.decode("utf-8")
而不是{encode
和{实际上,您的问题是将UTF-8字符串打印到不是UTF-8的上下文中。很可能您正在打印到
cmd
窗口,默认为Windows-1252。因此,cmd
试图将UTF-8字符解释为Windows-1252,并得到垃圾。在有一个非常简单的方法来测试这个。让Python将UTF-8字符串解码为Windows-1252,然后查看生成的Unicode字符串是否与所看到的一样。在
有两种解决方法:
对于方案1:
^{pr2}$对于选项2,它将是以下选项之一:
当然,如果保留中间Unicode字符串,就不需要所有这些
decode
调用:相关问题 更多 >
编程相关推荐