Python CSV转JSON时韩文显示Unicode编码的解决方法问询
解决CSV转JSON时韩文显示Unicode转义的正确思路
1. 先搞定CSV读取的编码正确性
CSV文件的原始编码是核心前提,读错编码后续处理全无效:
- 读取时显式指定韩文常用编码(
utf-8或euc-kr):import csv with open('korean_data.csv', 'r', encoding='utf-8') as f: reader = csv.DictReader(f) data = list(reader) - 不确定编码时用
chardet检测:import chardet with open('korean_data.csv', 'rb') as f: detect_result = chardet.detect(f.read()) print(detect_result['encoding']) # 将检测结果替换到读取代码的encoding参数中
2. 严格规范JSON序列化与写入流程
ensure_ascii=False必须配合UTF-8编码写入,二者缺一不可:
- 直接序列化写入的正确写法:
import json with open('output.json', 'w', encoding='utf-8') as f: json.dump(data, f, ensure_ascii=False, indent=4) - 若先生成JSON字符串再写入,也要保证写入时用UTF-8:
json_content = json.dumps(data, ensure_ascii=False) with open('output.json', 'w', encoding='utf-8') as f: f.write(json_content)
3. 排查中间数据处理的编码污染
- Python 3环境下无需使用
byteify这类兼容Python 2的函数,默认字符串为Unicode类型,额外转字节会触发JSON转义; - 避免对已为Unicode的字符串执行
encode操作,否则会变成字节串,导致序列化时出现转义字符。
4. 验证输出文件的查看方式
- 用支持UTF-8的编辑器(VS Code、Notepad++)打开输出的JSON文件,确保编辑器编码设置为UTF-8;
- 不要用Windows默认记事本(默认编码可能为GBK),否则会显示乱码,误判为转义问题。
内容的提问来源于stack exchange,提问作者JBan
相关产品推荐
相关产品推荐

