尝试从文本文件中打印简单列表时出现“输出不是utf-8”错误

时间:2013-08-18 14:56:47

标签: python

我在记事本中保存了一个包含ANSI编码列表的文本文件。

当我尝试使用Python中的以下脚本显示列表时,它会显示列表中的第一项,然后给出“output not utf-8”错误消息。

with open("animals.txt") as f:
    content = f.readlines()

for animal in content:
    print animal

有什么方法可以解决这个问题吗?

1 个答案:

答案 0 :(得分:3)

您正在读取一个字节字符串,然后将这些原始字节直接传输到您的输出,并且您的终端或IDE控制台抱怨字节流包含在UTF-8中非法的序列。

使用codecs.open()将文件读入unicode数据,然后让Python自动将unicode值编码到终端编解码器中:

import codecs

with codecs.open("animals.txt", 'r', encoding='mbcs') as f:
    content = f.readlines()

for animal in content:
    print animal

或直接在文件上循环:

import codecs

with codecs.open("animals.txt", 'r', encoding='mbcs') as f:
    for animal in f:
        print animal

mbcs是Windows ANSI代码页的Python名称:

  

仅限Windows:根据ANSI代码页(CP_ACP)

编码操作数

也许你的意思是一个不同的,特定的Windows代码页;在这种情况下,为Microsoft的西欧Latin-1变体选择正确的cp编解码器,例如cp1250cp1252