当前位置:首页 > Web开发 > 正文

json.dumps()包装中文字符串

2024-03-31 Web开发

标签:

开发环境

系统: 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. ...


ending ~


json.dumps()包装中文字符串

温馨提示: 本文由Jm博客推荐,转载请保留链接: https://www.jmwww.net/file/web/42732.html