成人免费观看网欧美片-成人免费观看视频-成人免费观看男女羞羞视频-成人免费观看的视频黄页-成人免费高清视频-成人免费福利片在线观看

千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機構(gòu)

手機站
千鋒教育

千鋒學習站 | 隨時隨地免費學

千鋒教育

掃一掃進入千鋒手機站

領(lǐng)取全套視頻
千鋒教育

關(guān)注千鋒學習站小程序
隨時隨地免費學習課程

當前位置:首頁  >  技術(shù)干貨  > 解決python中json.dumps中文亂碼問題

解決python中json.dumps中文亂碼問題

來源:千鋒教育
發(fā)布人:xqq
時間: 2023-11-09 05:28:06 1699478886

pythonjson.dumps中文亂碼問題解決

json中文亂碼

json.dumps(var,ensure_ascii=False)并不能解決中文亂碼的問題

json.dumps在不同版本的Python下會有不同的表現(xiàn),注意下面提到的中文亂碼問題在Python3版本中不存在。

注:下面的代碼再python2.7版本下測試通過

#-*-coding:utf-8-*-

odata={'a':'你好'}

printodata

結(jié)果:

{'a':'\xe4\xbd\xa0\xe5\xa5\xbd'}

printjson.dumps(odata)

結(jié)果:

{"a":"\u4f60\u597d"}

printjson.dumps(odata,ensure_ascii=False)

結(jié)果:

{"a":"浣犲ソ"}

printjson.dumps(odata,ensure_ascii=False).decode('utf8').encode('gb2312')

結(jié)果:

{"a":"你好"}

要解決中文編碼,需要知道python2.7對字符串是怎么處理的:

由于#--coding:utf-8--的作用,文件內(nèi)容以utf-8編碼,所以printodata

輸出的是utf-8編碼后的結(jié)果{‘a(chǎn)’:‘\xe4\xbd\xa0\xe5\xa5\xbd’}

json.dumps序列化時對中文默認使用的ascii編碼,printjson.dumps(odata)輸出unicode編碼的結(jié)果

printjson.dumps(odata,ensure_ascii=False)不使用的ascii編碼,以gbk編碼

‘你好’用utf8編碼是%E4%BD%A0%E5%A5%BD用gbk解碼是浣犲ソ

字符串在Python內(nèi)部的表示是unicode編碼。

因此,在做編碼轉(zhuǎn)換時,通常需要以unicode作為中間編碼,即先將其他編碼的字符串解碼(decode)成unicode,再從unicode編碼(encode)成另一種編碼。

decode的作用是將其他編碼的字符串轉(zhuǎn)換成unicode編碼

decode(’utf-8’)表示將utf-8編碼的字符串轉(zhuǎn)換成unicode編碼。

encode的作用是將unicode編碼轉(zhuǎn)換成其他編碼的字符串

encode(‘gb2312’),表示將unicode編碼的字符串轉(zhuǎn)換成gb2312編碼。

python3中沒有這種問題,所以最簡單的方法是引入__future__模塊,把新版本的特性導入到當前版本

from__future__importunicode_literals

printjson.dumps(odata,ensure_ascii=False)

結(jié)果

{"a":"你好"}

在寫入文件的時候出現(xiàn)了Python2.7的UnicodeEncodeError:‘a(chǎn)scii’codeccan’tencode異常錯誤

大神的解決方法:

不使用open打開文件,而使用codecs:

from__future__importunicode_literals

importcodecs

fp=codecs.open('output.txt','a+','utf-8')

fp.write(json.dumps(m,ensure_ascii=False))

fp.close()

以上內(nèi)容為大家介紹了解決python中json.dumps中文亂碼問題,希望對大家有所幫助,如果想要了解更多Python相關(guān)知識,請關(guān)注IT培訓機構(gòu):千鋒教育。

tags: python培訓
聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
10年以上業(yè)內(nèi)強師集結(jié),手把手帶你蛻變精英
請您保持通訊暢通,專屬學習老師24小時內(nèi)將與您1V1溝通
免費領(lǐng)取
今日已有369人領(lǐng)取成功
劉同學 138****2860 剛剛成功領(lǐng)取
王同學 131****2015 剛剛成功領(lǐng)取
張同學 133****4652 剛剛成功領(lǐng)取
李同學 135****8607 剛剛成功領(lǐng)取
楊同學 132****5667 剛剛成功領(lǐng)取
岳同學 134****6652 剛剛成功領(lǐng)取
梁同學 157****2950 剛剛成功領(lǐng)取
劉同學 189****1015 剛剛成功領(lǐng)取
張同學 155****4678 剛剛成功領(lǐng)取
鄒同學 139****2907 剛剛成功領(lǐng)取
董同學 138****2867 剛剛成功領(lǐng)取
周同學 136****3602 剛剛成功領(lǐng)取
相關(guān)推薦HOT