千鋒教育-做有情懷、有良心、有品質的職業教育機構

手機站
千鋒教育

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

千鋒教育

掃一掃進入千鋒手機站

領取全套視頻
千鋒教育

關注千鋒學習站小程序
隨時隨地免費學習課程

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

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

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

pythonjson.dumps中文亂碼問題解決

json中文亂碼

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

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

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

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

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

printodata

結果:

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

printjson.dumps(odata)

結果:

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

printjson.dumps(odata,ensure_ascii=False)

結果:

{"a":"浣犲ソ"}

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

結果:

{"a":"你好"}

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

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

輸出的是utf-8編碼后的結果{‘a’:‘\xe4\xbd\xa0\xe5\xa5\xbd’}

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

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

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

字符串在Python內部的表示是unicode編碼。

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

decode的作用是將其他編碼的字符串轉換成unicode編碼

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

encode的作用是將unicode編碼轉換成其他編碼的字符串

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

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

from__future__importunicode_literals

printjson.dumps(odata,ensure_ascii=False)

結果

{"a":"你好"}

在寫入文件的時候出現了Python2.7的UnicodeEncodeError:‘ascii’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()

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

tags: python培訓
聲明:本站稿件版權均屬千鋒教育所有,未經許可不得擅自轉載。
10年以上業內強師集結,手把手帶你蛻變精英
請您保持通訊暢通,專屬學習老師24小時內將與您1V1溝通
免費領取
今日已有369人領取成功
劉同學 138****2860 剛剛成功領取
王同學 131****2015 剛剛成功領取
張同學 133****4652 剛剛成功領取
李同學 135****8607 剛剛成功領取
楊同學 132****5667 剛剛成功領取
岳同學 134****6652 剛剛成功領取
梁同學 157****2950 剛剛成功領取
劉同學 189****1015 剛剛成功領取
張同學 155****4678 剛剛成功領取
鄒同學 139****2907 剛剛成功領取
董同學 138****2867 剛剛成功領取
周同學 136****3602 剛剛成功領取
相關推薦HOT
久久亚洲中文字幕精品一区四,亚洲日本另类欧美一区二区,久久久久久久这里只有免费费精品,高清国产激情视频在线观看
婷婷六月国产在线 | 天天综合网久久综合免费成人 | 视频列表中文字幕欧美国产 | 最新日韩精品中文字幕 | 性高朝久久久久久久 | 色婷婷综合久久久中文字幕 |