2013-08-18 33 views
1

我已經在記事本中保存了包含ANSI編碼列表的文本文件。嘗試從文本文件打印簡單列表時出現「輸出不是utf-8」錯誤

當我嘗試使用Python中的下面的腳本顯示列表時,它顯示列表中的第一項,然後給出「output not utf-8」錯誤消息。

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

for animal in content: 
    print animal 

有沒有辦法解決這個問題?

+0

舌頭在臉頰答案 - 使用Python 3! – rlms

+0

我們需要看'animals.txt'來查看真正發生了什麼。 –

+0

我正在使用Python 2.7。將更改爲Python 3解決問題? – bolshevik

回答

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名稱:

Wind只允許:根據ANSI代碼頁編碼操作數(CP_ACP)

也許你的意思是一個不同的,特定的Windows代碼頁;在這種情況下,選擇正確的cp編解碼器,例如cp1250cp1252適用於Microsoft西歐拉丁-1變體。

相關問題