-1

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

4

1 回答 1

0

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

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

你得到 a 的原因是UnicodeEncodeError你试图输出文本而 Python 不知道你的终端是什么编码,所以它默认为ascii. 要解决此问题,请使用sys.stdout = codecs.getwriter('utf8')(sys.stdout)或使用环境变量PYTHONIOENCODING="utf-8"

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

于 2012-07-10T13:33:50.357 回答