1. 程式人生 > >用python裡的json.dumps轉換編碼

用python裡的json.dumps轉換編碼

python編碼問題真的是煩躁,每次我匯入檔案,比如csv,txt時,用print想看一下,只要是list,dict之類的,中文就會被轉碼顯示,然後就會出現'\xe4\xb8\xad\xe6\x96\x87'這樣的值,而json.dumps就顯得十分好用了,當然了,這只是檢視內容時使用就好了

下面給出程式碼

#coding:utf-8
import json

list=['中文','english']
for s in list:
    print s,type(s)
print list,type(list)
print json.dumps(list,encoding='utf-8'
,ensure_ascii=False),type(json.dumps(list,encoding='utf-8',ensure_ascii=False))
print json.dumps(list,encoding='utf-8')
print json.dumps(list,ensure_ascii=False)

結果:

中文 <type 'str'>
english <type 'str'>
['\xe4\xb8\xad\xe6\x96\x87', 'english'] <type 'list'>
["中文", "english"] <type 'str'>
["\u4e2d\u6587", "english"]
["中文", "english"]

print 輸出s,s是一個str型別,顯示的是中文

print list,list是一個list型別,顯示的是unicode欄位。

而使用了json.dumps加兩個引數,則成功輸出我們要的中文欄位。

而裡面的引數含義:第一個是傳入函式的值,第二個是他的編碼方式是什麼,第三個則是不顯示為ascii碼值。

只賦值單一引數,能清楚的看出:

使用encoding引數能將unicode轉變為其他編碼,
使用ensure_ascii引數能夠把ascii值轉為自然語言.
雖然我這個例子中encoding引數用處不大,但實際操作下,我們一定要用第二個引數,編碼方式也許是"GBK","utf-8“,"unicode",這都是有可能的。