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

含重音字符的JSON与字符串在Python中出现异常编码问题

解决Python处理含重音字符JSON时的乱码问题

问题根源分析

你的测试结果混乱的核心原因是终端输出编码不匹配,以及部分场景下文件读取编码的隐性错误:

  • 你的file1.json和file2.json的十六进制转储是标准UTF-8编码(C3 A0对应à),文件本身没有问题。
  • 乱码�是Unicode替换字符,说明字符在编码转换过程中无法被当前输出编码识别。

针对性解决方案

1. 强制指定文件读取编码

Python的open()函数在不同系统下默认编码不同(比如Windows默认是cp1252而非UTF-8),必须显式指定encoding="utf-8"确保正确读取:

import json

# 正确读取file1.json的方式
with open("file1.json", "r", encoding="utf-8") as file:
    text = file.read()
    print(text)  # 正常显示{"a": "à"}
    data = json.loads(text)
    print(data)  # 正常显示{'a': 'à'}

2. 修复终端输出编码

如果终端默认编码不是UTF-8,Python打印Unicode字符时会出现乱码。可以通过以下方式调整:

  • 临时代码设置:在代码开头添加
    import sys
    sys.stdout.reconfigure(encoding='utf-8')
    
  • 终端全局设置:
    • Windows:执行chcp 65001切换到UTF-8编码
    • Linux/macOS:确保终端的LANG环境变量设置为zh_CN.UTF-8或en_US.UTF-8

3. 验证字符是否正确读取

不要依赖终端打印判断,可通过Unicode码点验证数据是否正确:

data = json.loads(text)
print(ord(data['a']))  # 输出224,对应à的Unicode码点U+00E0,说明读取正确

4. 规范代码文件编码

直接在代码里硬编码含特殊字符的字符串时,要确保.py文件以UTF-8保存,并在代码开头添加编码声明:

# -*- coding: utf-8 -*-
import json

text = '"à"'
print(json.loads(text))  # 配合UTF-8终端正常显示à

总结

本质是要确保文件读取编码、Python内部编码、终端输出编码三者统一为UTF-8,即可解决所有场景下的乱码问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 06:05:54