大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
小编给大家分享一下python json.dumps中文乱码怎么办,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
成都创新互联是一家专业从事成都网站设计、做网站、网页设计的品牌网络公司。如今是成都地区具影响力的网站设计公司,作为专业的成都网站建设公司,成都创新互联依托强大的技术实力、以及多年的网站运营经验,为您提供专业的成都网站建设、营销型网站建设及网站设计开发服务!Python是一种编程语言,内置了许多有效的工具,Python几乎无所不能,该语言通俗易懂、容易入门、功能强大,在许多领域中都有广泛的应用,例如最热门的大数据分析,人工智能,Web开发等。
json.dumps(var,ensure_ascii=False)
并不能解决中文乱码的问题
json.dumps
在不同版本的Python下会有不同的表现, 注意下面提到的中文乱码问题在Python3版本中不存在。
注:下面的代码再python 2.7版本下测试通过
# -*- coding: utf-8 -*- odata = {'a' : '你好'} print odata
结果:
{'a': '\xe4\xbd\xa0\xe5\xa5\xbd'}
print json.dumps(odata)
结果:
{"a": "\u4f60\u597d"}
print json.dumps(odata,ensure_ascii=False)
结果:
{"a": "浣犲ソ"}
print json.dumps(odata,ensure_ascii=False).decode('utf8').encode('gb2312')
结果:
{"a": "你好"}
要解决中文编码,需要知道python2.7对字符串是怎么处理的:
由于# -- coding: utf-8 --
的作用,文件内容以utf-8编码,所以print odata
输出的是utf-8编码后的结果{‘a': ‘\xe4\xbd\xa0\xe5\xa5\xbd'}
json.dumps 序列化时对中文默认使用的ascii编码, print json.dumps(odata)输出unicode编码的结果
print json.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__ import unicode_literals print json.dumps(odata,ensure_ascii=False)
结果:
{"a": "你好"}
在写入文件的时候出现了Python2.7的UnicodeEncodeError: ‘ascii' codec can't encode异常错误
大神的解决方法:
不使用open打开文件,而使用codecs:
from __future__ import unicode_literals import codecs fp = codecs.open('output.txt', 'a+', 'utf-8') fp.write(json.dumps(m,ensure_ascii=False)) fp.close()
以上是“python json.dumps中文乱码怎么办”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注创新互联成都网站设计公司行业资讯频道!
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。