Python下调用json.dumps中文显示问题及解决办法

本文介绍了一种常见的Python中处理JSON中文字符乱码的问题及解决方案。通常情况下,使用json.dumps方法将数据转换为JSON字符串时,中文字符会显示为uXXXX的形式。文章详细解释了该现象的原因在于json.dumps方法的ensure_ascii参数,默认设置为True导致所有非ASCII字符被转义。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题描述

今天写了一个python脚本,所有编码默认utf-8,通过json.dumps转为json,结果使用print打印出来,打印结果的中文字符一直显示为\xxxxx\xxxxx

原因

找个半天终于发现了问题所在:

$ help('json')

从中发现以下说明:
     |  __init__(self, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, sort_keys=False, indent=None, separators=None, encoding='utf-8', default=None)
     …………

     |      If *ensure_ascii* is true (the default), all non-ASCII
     |      characters in the output are escaped with \uXXXX sequences,
     |      and the results are str instances consisting of ASCII
     |      characters only.  If ensure_ascii is False, a result may be a
     |      unicode instance.  This usually happens if the input contains
     |      unicode strings or the *encoding* parameter is used.

说明json.dumps默认把所有中文字符转为了ascii,而我们使用的是utf-8,所以print出来中文不对

解决方法

为调用的json.dumps方法加入ensure_ascii=False参数就OK了,如下所示

$ json.dumps({"data": data}, ensure_ascii=False, indent=2)
{
  "data": [
    {
      "{#REALURL}": "测试_xxx"
    }, 
    {
      "{#REALURL}": "测试_xxx"
    }, 
    .
    .
    .
  ]
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值