python json.dumps中文乱码怎么办

  介绍

小编给大家分享一下python json。转储中文乱码怎么办,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获、下面让我们一起去了解一下吧!

python可以做什么

python是一种编程语言,内置了许多有效的工具,python几乎无所不能,该语言通俗易懂,容易入门,功能强大,在许多领域中都有广泛的应用,例如最热门的大数据分析,人工智能,网页开发等。

<代码> json.dumps (var, ensure_ascii=False) 并不能解决中文乱码的问题

<代码> json。转储>

注:下面的代码再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编码后的结果<代码>{'一个# 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中文乱码怎么办