小编给大家分享一下python json。转储中文乱码怎么办,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获、下面让我们一起去了解一下吧!
python可以做什么
python是一种编程语言,内置了许多有效的工具,python几乎无所不能,该语言通俗易懂,容易入门,功能强大,在许多领域中都有广泛的应用,例如最热门的大数据分析,人工智能,网页开发等。
<代码> json.dumps (var, ensure_ascii=False) 代码>并不能解决中文乱码的问题
<代码> json。转储> 代码在不同版本的Python下会有不同的表现,注意下面提到的中文乱码问题在Python3版本中不存在。
注:下面的代码再Python 2.7版本下测试通过
#, - *安康;编码:utf-8 - * - odata =,{& # 39;一个# 39;,:,& # 39;你好& # 39;} print odata
结果:
{& # 39;一个# 39;:& # 39;\ xe4 \ xbd \ xa0 \ xe5 \ xa5 \ xbd& # 39;}
引用>
print json.dumps (odata)结果:
{“a":“\ u4f60 \ u597d"}
引用>
print json.dumps (odata, ensure_ascii=False)结果:
{“a":“浣犲ソ“}
引用>
print json.dumps (odata, ensure_ascii=False) .decode (& # 39; use utf8 # 39;) .encode (& # 39; gb2312 # 39;)结果:
{“a":“你好“}
引用>
要解决中文编码,需要知道python2.7对字符串是怎么处理的:
由于<代码> #——编码:utf - 8 -> 代码的作用,文件内容以utf - 8编码,所以打印odata
输出的是utf - 8编码后的结果<代码>{'一个# 39;:\ xe4 \ xbd \ xa0 \ xe5 \ xa5 \ xbd& # 39;} 代码>
json。转储序列化时对中文默认使用的ascii编码,打印json.dumps (odata)输出unicode编码的结果
<代码>打印json.dumps (odata, ensure_ascii=False) 代码>不使用的ascii编码,以gbk编码
'你好& # 39;用utf8编码是% E4%BD % A0%E5%A5%BD用gbk解码是浣犲ソ
字符串在Python内部的表示是unicode编码。
因此,在做编码转换时,通常需要以unicode作为中间编码,即先将其他编码的字符串解码成unicode(解码),再从unicode编码(编码)成另一种编码。
解码的作用是将其他编码的字符串转换成unicode编码
<代码>解码(& # 39;utf - 8 # 39;) 代码>表示将utf - 8编码的字符串转换成unicode编码。
编码的作用是将unicode编码转换成其他编码的字符串
<代码>编码(gb2312 # 39;), 代码>表示将unicode编码的字符串转换成gb2312编码。
python3中没有这种问题,所以最简单的方法是引入__future__模块,把新版本的特性导入到当前版本
得到__future__ import unicode_literals print json.dumps (odata ensure_ascii=False)结果:
{“a":“你好“}
引用>
在写入文件的时候出现了Python2.7的UnicodeEncodeError:“ascii # 39;编解码器停下来# 39;t编码异常错误
大神的解决方法:
不使用开放打开文件,而使用解码器:
得到__future__ import unicode_literals import 编解码器 fp =, codecs.open (& # 39; output.txt& # 39;,, & # 39; a + & # 39;,, & # 39; utf - 8 # 39;) fp.write (json.dumps (m, ensure_ascii=False)) fp.close ()以上是“python json.dumps中文乱码怎么办”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!
python json.dumps中文乱码怎么办