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

Python CSV转JSON时斯洛文尼亚特殊字符显示异常求助

解决JSON输出中非ASCII字符转义的问题

问题出在json.dump()的默认行为上——它的ensure_ascii参数默认值为True,会自动把所有非ASCII字符转换成Unicode转义序列(比如\u0161)。要让特殊字符直接以UTF-8编码输出,只需要将这个参数设为False即可。

修改后的代码如下:

import csv
import json

def read_rail_nodes(_in_file: str, _out_file: str) -> None:
    json_objects = []
    with open(_in_file, 'r', encoding='utf-8') as file:
        csv_reader = csv.reader(file)
        next(csv_reader)
        for row in csv_reader:
            id, station_name, _, _ = row
            json_objects.append({'id': id, 'station_name': station_name})

    # 添加ensure_ascii=False参数,关闭自动转义
    with open(_out_file, 'w', encoding='utf-8') as file:
        json.dump(json_objects, indent=4, fp=file, ensure_ascii=False)

    print("\n[rail_nodes.csv] data converted and saved to [", _out_file, "]\n")

read_rail_nodes('rail_nodes.csv', 'rail_nodes.json')

关键说明:

  • ensure_ascii=False会让json.dump()直接输出原UTF-8字符,而非转义成Unicode序列,完全符合你的期望输出要求。
  • 你之前设置的文件读写编码utf-8是正确的,无需修改,配合ensure_ascii=False就能确保斯洛文尼亚语特殊字符(č、š、ž等)正常显示。
  • 用VS Code打开输出的JSON文件时,保持编码为UTF-8即可直接看到正确字符,不会出现乱码问题。

这种修改不存在后续风险,因为JSON规范本身支持UTF-8编码的字符直接写入,所有符合标准的JSON解析器都能正确处理这些字符。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 15:42:34