我从丹麦文本文件中读到了一些数据。但我似乎无法找到解码它的方法。 原始文本是“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”?
答案 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
可能更容易。