python json.dumps 中文编码问题
来源:互联网 发布:张杰唱功专业点评知乎 编辑:程序博客网 时间:2024/05/22 01:41
原文链接: python json.dumps 中文编码问题
问题描述
python与nodejs通信, 参数为json格式数据, 且包含md5校验值
参数一旦包含中文, nodejs端校验md5码时就会失败
原因
json.dumps参数ensure_ascii所致
https://docs.python.org/3.6/library/json.html
If ensure_ascii is true (the default), the output is guaranteed to have all incoming non-ASCII characters escaped.
If ensure_ascii is false, these characters will be output as-is.
解决办法
json.dumps
时设置参数ensure_ascii=False
解决过程
nodejs测试代码
md5 = require('md5');data = {'中':'国'};console.log(data);j = JSON.stringify(data);console.log(j);var r = md5(j);console.log(r);
输出
{ '中': '国' }{"中":"国"}d2a4c44eea271a0e00f70e4ea6fd88aa
node-md5
, https://github.com/pvorb/node-md5
python测试代码
➜ ~ python3Python 3.5.2 (default, Sep 14 2016, 11:28:32) [GCC 6.2.1 20160901 (Red Hat 6.2.1-1)] on linuxType "help", "copyright", "credits" or "license" for more information.>>> import json>>> import hashlib>>> _dict = {'中': '国'}>>> _json = json.dumps(_dict, separators=(',', ':'))>>> _json'{"\\u4e2d":"\\u56fd"}'>>> _json.encode('utf-8')b'{"\\u4e2d":"\\u56fd"}'>>> m = hashlib.md5()>>> m.update(_json.encode('utf-8'))>>> m.hexdigest()'84d64021339907e604f1dff60f505c14'>>> _json = json.dumps(_dict, separators=(',', ':'), ensure_ascii=False)>>> _json'{"中":"国"}'>>> _json.encode('utf-8')b'{"\xe4\xb8\xad":"\xe5\x9b\xbd"}'>>> m = hashlib.md5()>>> m.update(_json.encode('utf-8'))>>> m.hexdigest()'d2a4c44eea271a0e00f70e4ea6fd88aa'
其他补充
json.dumps参数separators, 如果不设置为separators=(‘,’, ‘:’)也会导致nodejs端校验md5码失败
The default is (‘, ‘, ‘: ‘) if indent is None and (‘,’, ‘: ‘) otherwise.
To get the most compact JSON representation, you should specify (‘,’, ‘:’) to eliminate whitespace.
Changed in version 3.4: Use (‘,’, ‘: ‘) as default if indent is not None.
- python json.dumps 中文编码问题
- python json.dumps 中文编码
- [Python]json dumps中文问题
- python的json.dumps中文问题
- python json.dumps 中的ensure_ascii 参数引起的中文编码问题
- Python下调用json.dumps中文显示问题及解决办法
- python json.dumps处理中文字符
- python的json.dumps输出中文
- Python 3中的json.dumps,会将中文转换为unicode编码后保存
- python json loads dumps
- Python json.dumps
- python中json.dumps
- Python json dumps() && loads()
- python: json.dumps()中的参数,数据编码格式转换
- python中json.dumps使用及字符编码
- 用python里的json.dumps转换编码
- python 读写Json的中文编码问题
- Python下调用json.dumps中文显示问题解决办法
- 添加视频播放功能、鼠标点击人物移动
- Shiro 的学习总结
- Android深入浅出之 Audio——第一部分 AudioTrack分析
- logstash filter 学习
- 消息队列的两种模式及实现
- python json.dumps 中文编码问题
- 三、Linux系统管理
- 三大Java 虚拟机垃圾回收机制的比较(HotSpot, JRockit, IBM JVM)
- laravel路由文件分割
- Java多线程/并发10、不可重入锁/自旋锁、可重入锁
- linux下jdk1.8安装
- 自定义标签
- 深入理解view和viewgroup以及安卓屏幕图层基础
- linux设备树之gpio