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

使用LangChain JSONLoader加载含德语Umlaute的UTF-8 JSON编码异常问题

解决LangChain JSONLoader加载含德语变音符号JSON的编码问题

方案1:加载后手动处理编码

加载数据后,将每个文档的page_content解析为字典,再用json.dumps并设置ensure_ascii=False重新生成字符串,即可保留原始Unicode字符:

import json
from langchain_community.document_loaders import JSONLoader

loader = JSONLoader(
    file_path='test.json',
    jq_schema='.json[]',
    text_content=False)
data = loader.load()

for doc in data:
    content_dict = json.loads(doc.page_content)
    doc.page_content = json.dumps(content_dict, ensure_ascii=False)

print(data[0].page_content)

方案2:自定义Unicode友好的JSONLoader

如果需要多次复用该逻辑,可以子类化JSONLoader,重写解析逻辑确保输出保留Unicode字符:

from langchain_community.document_loaders import JSONLoader
import json
from langchain_community.document_loaders.json_loader import jq

class UnicodeJSONLoader(JSONLoader):
    def _parse(self, content: str) -> list[str]:
        parsed_items = jq.compile(self.jq_schema).input(json.loads(content)).all()
        return [json.dumps(item, ensure_ascii=False) for item in parsed_items]

# 使用自定义加载器
loader = UnicodeJSONLoader(
    file_path='test.json',
    jq_schema='.json[]',
    text_content=False)
data = loader.load()
print(data[0].page_content)

问题根源

当text_content=False时,JSONLoader默认使用json.dumps(ensure_ascii=True)将解析后的JSON对象转为字符串,导致德语变音符号被转义为ASCII序列。设置ensure_ascii=False会让序列化过程保留原始Unicode字符,避免转义。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 05:59:58