Python读取MongoDB希伯来语值返回空白的UTF-8配置方案咨询
MongoDB 默认使用 UTF-8 编码存储所有数据,pymongo 驱动读写时会自动处理编码转换,不需要额外指定 UTF-8 编码来检索数据,你遇到的问题都是编码不匹配导致的,可按以下步骤排查解决:
- 第一步:确认 Python 源码文件编码
你代码中直接写了希伯来语字面量topic = 'בדיקה',如果.py源码文件没有保存为 UTF-8 编码,这个变量本身就是乱码,自然无法匹配到文档中的键。
解决方案:将源码文件保存为 UTF-8 编码,Python3 可在文件开头加声明# -*- coding: utf-8 -*-明确指定编码;Python2 需在希伯来语字符串前加u标记为 Unicode 类型:topic = u'בדיקה'。 - 第二步:验证文档中的实际键值
先打印完整文档确认存入的键是否正确:
对比输出的键是否和你写的for x in mycol.find(): print(x)בדיקה完全一致,如果存数据时就用了错误编码写入乱码键,读取时自然匹配不到。 - 第三步:修正存数据逻辑
往 MongoDB 写入数据时,直接传入 Python 原生字符串即可,不要手动转码为字节串,pymongo 会自动完成 UTF-8 编码存储,和你之前本地存 JSON 的逻辑一致:写入时保证传入的是正常 Unicode 字符串,不需要额外处理。 - 第四步:兜底兼容写法
如果还是匹配不到,可以先遍历文档的键做校验,确认匹配规则:target_topic = 'בדיקה' for x in mycol.find(): for k in x.keys(): if k == target_topic: print(f"匹配到键,值为:{x[k]}")
内容的提问来源于stack exchange,提问作者Nyaaaaaaaa
相关产品推荐
相关产品推荐

