json.dumps()包装中文字符串
开发环境
- 系统: ubuntu18.04
- 系统编码: $LANG = en_US.UTF-8
- python解释器版本: Python 3.6.7
乱码现场
使用 json.dumps() 将 dict 转化为 json 数据的时候, 中文会显示为对应的 unicode 编码形式, 如果是将数据发送到第三方, 那么也会显示 unicode 编码形式, 很僵硬. ( 虽然说尽量使用英文进行交互, 但是相关部门的车牌号, 违法地址等信息都是中文的阿... )
demo:
param = {
"code": "0",
"message": "中文内容"
}
param1 = json.dumps(param, ensure_ascii=False)
param2 = json.dumps(param)
print(param1)
print(param2)
输出内容:
param1: {"code": "0", "message": "中文内容"}
param2: {"code": "0", "message": "\u4e2d\u6587\u5185\u5bb9"}
并非乱码, 其实是 unicode 的16进制表示形式.
分析
区别在于 ensure_ascii=False 这个参数, 看下 json.dumps() 的方法的源码:
def dumps(obj, *, skipkeys=False, ensure_ascii=True, check_circular=True,
allow_nan=True, cls=None, indent=None, separators=None,
default=None, sort_keys=False, **kw):
...
# 如果 ensure_ascii 为false,则返回值可以包含非ascii值
If ``ensure_ascii`` is false, then the return value can contain non-ASCII
characters if they appear in strings contained in ``obj``. Otherwise, all
such characters are escaped in JSON strings.
...
使用 requests 发送中文数据的demo
# encoding: utf-8
import time
import json
import requests
def http_post(url, param=None):
param_json = param and json.dumps(param, ensure_ascii=False)
headers = {
"content-type": "application/json",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
"Chrome/71.0.3578.98 Safari/537.36"
}
with requests.Session() as session:
for i in range(3):
try:
resp = session.post(url, headers=headers, data=param_json.encode("utf-8"), verify=False, timeout=10)
if resp.status_code < 300:
print(resp)
return
else:
print('status code %s' % resp.status_code)
break
except Exception as e:
print(e)
time.sleep(1)
break
if __name__ == '__main__':
param = {
"code": "0",
"message": "中文内容"
}
param1 = json.dumps(param, ensure_ascii=False)
param2 = json.dumps(param)
print("param1: ", param1)
print("param2: ", param2)
http_post("http://10.10.19.199:8000/client/instesv/illegallogic", param=param)
接收方:

body content:[{"code": "0", "message": "中文内容"}]
ending ~
json.dumps()包装中文字符串的更多相关文章
- python3.4学习笔记(二十六) Python 输出json到文件,让json.dumps输出中文 实例代码
python3.4学习笔记(二十六) Python 输出json到文件,让json.dumps输出中文 实例代码 python的json.dumps方法默认会输出成这种格式"\u535a\u ...
- python json.dumps输出中文问题
json.dumps 输出的中文是"\u6211\u662f"格式的,输出中文需要指定ensure_ascii=False. json.dumps(actual,ensure_as ...
- python json.dumps() 中文乱码问题
python json.dumps() 中文乱码问题 python 输出一串中文字符,在控制台上(控制台使用UTF-8编码)通过print 可以正常显示,但是写入到文件中之后,中文字符都输出成as ...
- python2.7字典转换成json时中文字符串变成unicode的问题:
参考:http://blog.csdn.net/u014431852/article/details/53058951 编码问题: python2.7字典转换成json时中文字符串变成unicode的 ...
- Python下调用json.dumps中文显示问题解决办法
json.dumps在默认情况下,对于非ascii字符生成的是相对应的字符编码,而非原始字符,例如: import json js = json.loads('{"haha": & ...
- python3解决 json.dumps中文乱码
使用json.dumps()运行结果如下 role_name字段中文乱码了 只需要使用ensure_ascii=False 运行结果如下:
- python json.dumps()函数输出json格式,使用ensure_ascii参数对中文输入的支持
在python使用过程中,输入中文,不能正常的输出,可以使用ensure_ascii参数来解决不能输入中文的问题 代码块: import json friends={"name": ...
- python 使用json.dumps() 的indent 参数,获得漂亮的格式化字符串后输出
想获得漂亮的格式化字符串后输出,可以使用json.dumps() 的indent 参数.它会使得输出和pprint() 函数效果类似 >>> data {'age': 4, 'nam ...
- python将字符串转换成对应的python数据类型--eval和json.loads(),json.dumps()
eval()和json.loads() 都可以将字符串转换成对应的python数据类型,举个字典的例子,同样适合其他数据类型元组.列表.集合. In [3]: ss = '{"a" ...
随机推荐
- 堆叠注入——BUUCTF-随便注
由题目提示知道,这题需要进行sql注入 输入1'发现报错 再输入1';show batabases#出现了一大堆数据库 再输入1';show tables#出现了两个表 猜测flag在这2个表中,输入 ...
- 记一次phpmyadmin 4.8.1 远程文件包含漏洞(BUUCTF web)
题目很简单,一个滑稽 打开源码,发现存在source.php文件 于是访问文件,发现出现一串php源码 提示存在hint.php,于是访问发现一句话 flag not here, and flag i ...
- supervisor更改某项目配置后 需要重新启动才有效
在linux服务器上部署了node项目,使用supervisor进行管理,supervisor是个好工具,具体介绍见这里about supervisor 梗概了该项目对的某些配置后,重新启动项目,发现 ...
- Unity移动端入门 - Android那些事
目录 大小1.92GB,ts格式,语言:中文 扫码时备注或说明中留下邮箱 付款后如未回复请至https://shop135452397.taobao.com/ 联系店主
- Java地址:
GitHub:https://github.com/nanchen2251 个人博客:https://nanchen2251.github.io/ 简书地址:http://www.jianshu.co ...
- Sequelize模糊查询
const Sequelize = require('sequelize'); const Op = Sequelize.Op; User.findAll({ raw: true, order: [ ...
- Ubuntu 上多版本软件管理方法
https://linuxize.com/post/how-to-install-gcc-compiler-on-ubuntu-18-04/ sudo apt install software-pro ...
- OpenShift 4.2 Service Mesh
1.和社区版Istio的区别 OpenShift 4.2的Service Mesh和upstream的Istio项目的增强,除了产品化之外,借用官方文档,区别在于: Red Hat OpenShift ...
- Nginx 配置学习
官方文档 一.概述 Nginx的配置放在配置文件nginx.conf/etc/nginx/nginx.conf中,大概的结构如下: main # 全局配置 events { # nginx工作模式配置 ...
- element ui 下拉框绑定对象并且change传多个参数
废话不说直接上代码说明真相. <template> <div class="hello"> <span>可以设置的属性 value-key=&q ...