Python使用'ÆØÅ'解码Unicode文件

时间:2012-07-10 12:57:53

标签: python unicode-string

我从丹麦文本文件中读到了一些数据。但我似乎无法找到解码它的方法。 原始文本是“dør”但在原始文本文件中存储为“d√Πr”

所以我尝试了显而易见的

InputData = "d√∏r"
Print InputData.decode('iso-8859-1')

遗憾地导致以下错误:

UnicodeEncodeError: 'ascii' codec can't encode characters in position 1-6: ordinal not in range(128)

UTF-8给出了同样的错误。 (使用Python 2.6.5)

如何解码此文本,以便打印的信息为“dør”?

1 个答案:

答案 0 :(得分:0)

C3 B8是“ø”的UTF-8编码。您需要以UTF-8编码读取文件:

import codecs
codecs.open(myfile, encoding='utf-8')

您获得UnicodeEncodeError的原因是您正在尝试输出文本而Python不知道您的终端所处的编码,因此默认为ascii。要解决此问题,请使用sys.stdout = codecs.getwriter('utf8')(sys.stdout)或使用环境变量PYTHONIOENCODING="utf-8"

请注意,这将为您提供unicode个对象的文字;如果您的程序中的其他所有内容都是str,那么您将遇到兼容性问题。将所有内容转换为unicode或(可能更容易)使用ustr.encode('iso-8859-1')将文件重新编码为Latin-1,但请注意,如果有任何内容超出Latin-1代码页,这将会中断。将您的程序转换为在内部str编码中使用utf-8可能更容易。