You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python json.dumps编码问题:MongoDB无法存储UTF-8可读JSON字符串

问题分析与解决

错误原因

  1. 默认转义非ASCII字符:json.dumps(jsoninfo)默认开启ensure_ascii=True,会把所有非ASCII字符转成\uXXXX格式的转义序列,所以你看到的是转义后的字符串,而非原始UTF-8字符。
  2. 错误编码为bytes对象:调用.encode("utf-8")会把字符串转换成bytes类型(表现为b'...'),MongoDB会将bytes对象识别为二进制数据存储,而非普通字符串。

正确实现方式

直接使用json.dumps并设置ensure_ascii=False,不需要额外编码,得到的UTF-8格式字符串可以直接存入MongoDB:

placedict = {
    "id": geonames.geonames_id,
    "info": json.dumps(jsoninfo, ensure_ascii=False)
}

原理说明

  • Python 3中的str类型本身就是Unicode编码,json.dumps(jsoninfo, ensure_ascii=False)会生成包含原始UTF-8字符的字符串,而非转义序列。
  • MongoDB的Python驱动(如pymongo)会自动处理字符串的编码存储,直接存入str类型即可,无需手动转成bytes。

内容的提问来源于stack exchange,提问作者Robert Alexander

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 01:31:18