2014-02-12 55 views
2

我試圖打開一個文件,但不斷得到一個錯誤(解碼錯誤)。我終於遇到了一個關於stackoverflow的話題,並且還有一步。但是,現在當我嘗試循環訪問我的文件時,我沒有得到任何結果。該文件是uTorrent的設置文件。我相當新的Python和編程,所以我想我可以嘗試從該文件中讀取和提取一些參數。UnicodeDecodeError當試圖打開文件

getDir = r'{0}/{1}/{2}/AppData/Roaming/uTorrent/settings.dat'.format(partition, 
"Users", user) 

data = [] 
try: 
    with codecs.open(getDir, "r") as f: 
     for lines in f: 
      data.append(lines) 
except UnicodeEncodeError: 
    pass 

當我使用UnicodeEncodeError但是沒有其他異常時出現錯誤。我嘗試過使用/不使用codecs.open,並且在open函數中指定解碼類型,我也使用了ignore。代碼通過但列表保持空白。

UnicodeDecodeError: 'charmap' codec can't decode byte 0x8f in position 1962: character maps to <undefined> 

該代碼與其他文件在同一目錄中正常工作。我檢查過這個文件,並且有一些奇怪的字符。下面的例子。

RÉ」 tÝï:Q‘æІ• 

真的很感謝幫助和感謝一個真棒網站!

+2

您沒有指定目標編碼。你知道哪一個是? –

+0

不,請告訴我我是如何做到的。 – Ekonomipapper

回答

0

摘要

您需要在打開文件中指定的編碼。如果編碼是'utf-16',它會看起來像這樣,儘管從你給出的例子來看,它可能不是。

with codecs.open(getDir, "r", encoding="utf-16") as f: 

錯誤處理

您還可以指定希望通過把在參數「錯誤」處理的錯誤。這使您可以替換未知字符或忽略它們。在這裏看到更多的細節:http://docs.python.org/2/library/codecs.html#codec-base-classes

讀物

你可能想知道你怎麼能確定編碼?總之,你需要知道編碼是什麼。以簡明易懂的方式介紹編碼和解碼的鏈接:http://www.joelonsoftware.com/articles/Unicode.html

相關問題