2013-08-19 89 views
0

我有字符\ u002d,\ u2019,u \ 2022,\ u25ba,\ u2013等來到我的數據中。 我要做json.loads(data)python中的Unicode編碼錯誤

我試圖做

data1 = data.encode('utf-8') 
json.loads(data1) 

我仍然得到一個錯誤。

也試過以下,但在錯誤

b1 = data.encode('ascii', 'ignore') 
b2 = json.loads(b1) 

它的工作原理,如果我替換字符我的數據,如「\ u002d」來結束了「 - 」,但我不知道還有什麼其他的字符可能會蠕變。所以我正在尋找一種解決方案,將編碼這些字符

回答

2

沒有需要編碼的數據。

餵它直接json.loads(); JSON標準使用\u....轉義碼來表示統一碼值也是

這些值不以UTF-8編碼,Python json模塊將爲您處理它們。

即使數據是以UTF-8編碼的json模塊也會爲您處理。即使它沒有,你會使用str.decode(),不編碼。

UTF-8數據看起來也不一樣; U + 2019碼點看起來像:

>>> u'\u2019'.encode('utf8') 
'\xe2\x80\x99' 

當編碼爲UTF-8。

+0

是的,它工作。但是現在我無法將它寫入文件。它說:回溯(最近呼叫最後): 文件「C:\ Python27 \ AureusBAXProject.py」,行202,在 outfile.writerows(outlist) UnicodeEncodeError:'ascii'編解碼器無法編碼字符u'\ u2022'在位置0:序號不在範圍內(128) – user1946217

+0

@ user1946217:然後使用'io.open()'打開你的輸出文件。在這種情況下,你的unicode數據需要被編碼。你做什麼編碼取決於你需要怎樣處理輸出CSV。 –