pythonjson.dumps中文编码
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
pythonjson.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.。