python json.dumps中文乱码问题解决


Posted in Python onApril 01, 2020

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解码是 浣?濂?/p>

字符串在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中文乱码问题解决的文章就介绍到这了,更多相关python json.dumps中文乱码内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python的常见命令注入威胁
Feb 18 Python
python之模拟鼠标键盘动作具体实现
Dec 30 Python
Python中pygame的mouse鼠标事件用法实例
Nov 11 Python
Python不使用int()函数把字符串转换为数字的方法
Jul 09 Python
Django使用AJAX调用自己写的API接口的方法
Mar 06 Python
python3+PyQt5 使用三种不同的简便项窗口部件显示数据的方法
Jun 17 Python
Python 200行代码实现一个滑动验证码过程详解
Jul 11 Python
python网络编程 使用UDP、TCP协议收发信息详解
Aug 29 Python
Python的几种主动结束程序方式
Nov 22 Python
Python 解码Base64 得到码流格式文本实例
Jan 09 Python
python GUI库图形界面开发之PyQt5结合Qt Designer创建信号与槽的详细方法与实例
Mar 08 Python
浅谈python3打包与拆包在函数的应用详解
May 02 Python
Django Admin后台添加数据库视图过程解析
Apr 01 #Python
pyqt5中动画的使用详解
Apr 01 #Python
django项目中新增app的2种实现方法
Apr 01 #Python
Django Admin设置应用程序及模型顺序方法详解
Apr 01 #Python
django API 中接口的互相调用实例
Apr 01 #Python
完美解决pyinstaller打包报错找不到依赖pypiwin32或pywin32-ctypes的错误
Apr 01 #Python
Python greenlet和gevent使用代码示例解析
Apr 01 #Python
You might like
优化php效率,提高php性能的一些方法
2011/03/24 PHP
php传值赋值和传地址赋值用法实例分析
2015/06/20 PHP
PHP 使用 Imagick 裁切/生成缩略图/添加水印自动检测和处理 GIF
2016/02/19 PHP
Smarty实现页面静态化(生成HTML)的方法
2016/05/23 PHP
浅谈PHP中类和对象的相关函数
2017/04/26 PHP
PHP简单实现模拟登陆功能示例
2017/09/15 PHP
php-7.3.6 编译安装过程
2020/02/11 PHP
JS上传图片前的限制包括(jpg jpg gif及大小高宽)等
2012/12/19 Javascript
探讨javascript是不是面向对象的语言
2013/11/21 Javascript
详解require.js配置路径的用法和css的引入
2017/09/06 Javascript
JavaScript实现焦点进入文本框内关闭输入法的核心代码
2017/09/20 Javascript
vue-router 路由基础的详解
2017/10/17 Javascript
vue中eventbus被多次触发以及踩过的坑
2017/12/02 Javascript
详解vue在项目中使用百度地图
2019/03/26 Javascript
jQuery Migrate 插件用法实例详解
2019/05/22 jQuery
浅谈JavaScript中this的指向问题
2020/07/28 Javascript
关于ES6尾调用优化的使用
2020/09/11 Javascript
Python字典简介以及用法详解
2016/11/15 Python
更换Django默认的模板引擎为jinja2的实现方法
2018/05/28 Python
Python有参函数使用代码实例
2020/01/06 Python
Python集合操作方法详解
2020/02/09 Python
浅谈ROC曲线的最佳阈值如何选取
2020/02/28 Python
python 装饰器重要在哪
2021/02/14 Python
丝芙兰法国官网:SEPHORA法国
2016/09/01 全球购物
美国旅游网站:Tours4Fun
2017/02/17 全球购物
英国旅游额外服务市场领导者:Holiday Extras(机场停车场、酒店、接送等)
2017/10/07 全球购物
海蓝之谜英国官网:La Mer英国
2020/01/15 全球购物
英国户外服装、鞋类和设备的领先零售商:Millets
2020/10/12 全球购物
优秀教师先进事迹
2014/01/22 职场文书
中学生国旗下讲话稿
2014/04/26 职场文书
商品陈列协议书
2014/09/29 职场文书
教师工作总结范文2014
2014/11/10 职场文书
2014年大学学生会工作总结
2014/12/02 职场文书
2015年出纳工作总结与计划
2015/05/18 职场文书
用Python提取PDF表格的方法
2021/04/11 Python
python引入其他文件夹下的py文件具体方法
2021/05/23 Python