2014-03-03 67 views
1

我有一個冗長的json文件,其中包含utf-8個字符(並以utf-8編碼)。我想用python使用內置的json模塊來閱讀它。Python忽略編碼參數轉而支持cp1252

我的代碼如下所示:

dat = json.load(open("data.json"), "utf-8") 

雖然我明白了「UTF-8」的說法應該是不必要的,因爲它假定爲默認值。不過,我得到這個錯誤:

Traceback (most recent call last): 
    File "winratio.py", line 9, in <module> 
    dat = json.load(open("data.json"), "utf-8") 
    File "C:\Python33\lib\json\__init__.py", line 271, in load 
    return loads(fp.read(), 
    File "C:\Python33\lib\encodings\cp1252.py", line 23, in decode 
    return codecs.charmap_decode(input,self.errors,decoding_table)[0] 
UnicodeDecodeError: 'charmap' codec can't decode byte 0x90 in position 28519: ch 
aracter maps to <undefined> 

我的問題是:爲什麼蟒蛇似乎忽略了我的編碼規範,並嘗試加載CP1252文件?

回答

0

試試這個:

import codecs 

dat = json.load(codecs.open("data.json", "r", "utf-8")) 

而且,這裏描述關於寫模式的一些提示的編解碼器庫的情況下:Write to UTF-8 file in Python