python json.dumps 中文編碼


Python版本: 2.7

#coding=utf-8
import json

dic = {"a":"中國"}
print dic 
# {'a': '\xe4\xb8\xad\xe5\x9b\xbd'}

print print json.dumps(dic) 
#{"a": "\u4e2d\u56fd"}

print json.dumps(dic,ensure_ascii=False)
#{"a": "中國"}
  • 首行#coding=utf-8,表示文件內容以utf-8編碼,因此print dic的輸出結果就是utf-8編碼的結果: {'a': '\xe4\xb8\xad\xe5\x9b\xbd'}
  • json.dumps 進行序列化時,默認使用ascii編碼, print json.dumps(dic)輸出unicode編碼的結果: {"a": "\u4e2d\u56fd"}
  • json.dumps(dic,ensure_ascii=False),不使用ascii編碼,輸出結果為:{"a": "中國"}

但是有時也碰到 json.dumps(m,ensure_ascii=False)之后依舊是亂碼的格式,可采取下面方式處理:

#coding=utf-8
import json 

dic = {"a":"中國"}
print json.dumps(dic,ensure_ascii=False).decode("utf-8").encode("gb2312") #{"a":"中國"}
 

在Python2.7內部,字符串一般有兩種類型:unicode和str(str為字節碼,會根據某種編碼【文件開頭可通過#coding=XXX方式指定】方式把字符串轉成一個個字節,unicode則是用unicode編碼的字符串。直接賦值字符串,類型為str,在字符串前面加一個u,則變為unicode)。在做編碼轉換時,通常需要以unicode作為中間編碼,即先將其他編碼的字符串解碼(decode)成unicode,再從unicode編碼(encode)成另一種編碼。

  • decode的作用對str類型進行decode,得到unicode類型。也即是str -> decode(根據指定編碼) -> unicode.
  • encode的作用對unicode進行encode,得到得到字節串str類型。也即是unicode -> encode(根據指定編碼) -> str.

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM