Instagram导出JSON聊天日志非ASCII字符解析失败问题求助
Instagram导出JSON字符编码修复方案
问题本质
你遇到的乱码是典型的编码二次错误:Instagram导出的UTF-8字节被错误地用Latin-1(ISO-8859-1)解码成字符串,导致像ó变成ó这类乱码。只要反向操作就能批量修复。
Python程序化修复方案
用递归遍历JSON结构,把所有错误编码的字符串转回正确格式:
import json def fix_encoding(item): if isinstance(item, str): # 核心修复逻辑:错误解码的字符串转字节,再用UTF-8正确解码 return item.encode('latin-1').decode('utf-8') elif isinstance(item, list): return [fix_encoding(sub_item) for sub_item in item] elif isinstance(item, dict): return {key: fix_encoding(value) for key, value in item.items()} else: return item # 替换成你的原始JSON文件路径 with open('instagram_messages.json', 'r', encoding='utf-8') as f: raw_data = json.load(f) fixed_data = fix_encoding(raw_data) # 保存修复后的文件,ensure_ascii=False保留非ASCII字符 with open('fixed_instagram_messages.json', 'w', encoding='utf-8') as f: json.dump(fixed_data, f, ensure_ascii=False, indent=2)
这段代码会自动处理所有嵌套的字典、列表,一次性修复所有乱码字符串(包括表情符号)。
第三方工具快速修复
如果不想写代码,用文本编辑器就能搞定:
- VS Code:打开JSON文件,点击右下角的编码标识(比如显示「UTF-8」),先选择「ISO-8859-1」,再重新选择「UTF-8」,乱码会自动修正,直接保存即可。
- Notepad++:打开文件后,依次点击「编码」→「字符集」→「西欧」→「ISO-8859-1」,再点击「编码」→「转换为UTF-8」,最后保存文件。
内容的提问来源于stack exchange,提问作者TLeo
相关产品推荐
相关产品推荐

