Python读取JSON文件时如何保留特殊字符?
解决Python读取JSON时特殊字符乱码的问题
这个问题本质是编码不匹配导致的——你的JSON文件里的UTF-8字符被Python用系统默认编码(比如Windows上的cp1252)错误解码了,所以才出现了sejÃ\xado这种乱码。下面是具体的解决步骤:
1. 确保JSON文件以UTF-8编码保存
很多编辑器(比如Windows记事本)默认用ANSI编码保存文件,这会破坏特殊字符。你需要:
- 用代码编辑器(VS Code、Sublime等)打开JSON文件
- 选择「另存为」,在编码选项里选择UTF-8(不要选UTF-8 BOM,除非有特殊需求)
- 确认文件内容保持正确的双引号格式:
{ "list_1":["numeral sejío"] }
2. 读取JSON时明确指定UTF-8编码
Python的open()函数默认使用系统编码,你需要手动指定encoding='utf-8'来保证正确解码。示例代码:
import json # 读取文件时指定编码为UTF-8 with open('your_json_file.json', 'r', encoding='utf-8') as f: json_data = json.load(f) # 注意:JSON解析后是字典,应该用键访问而不是属性(除非你用了特殊工具转成对象) print(json_data['list_1']) # 输出:['numeral sejío']
为什么会出现这个问题?
你看到的sejÃ\xado是UTF-8编码的sejío被用Latin-1(cp1252)解码后的结果:
í的UTF-8编码是0xC3 0xAD- 用Latin-1解码时,
0xC3变成Ã,0xAD变成\xAD(软连字符),就出现了乱码。
只要保证文件保存和读取都用UTF-8编码,就能完美保留原始特殊字符啦~
内容的提问来源于stack exchange,提问作者sayan_sen
相关产品推荐
相关产品推荐

