Python加载JSON文件时遭遇UnicodeDecodeError错误的求助
Python加载JSON文件时遭遇UnicodeDecodeError错误的求助
嘿,刚接触Python和JSON就碰到编码问题确实挺闹心的!我来帮你捋清楚问题出在哪,以及怎么解决:
你遇到的UnicodeDecodeError本质是你的JSON文件实际编码不是UTF-8,但Python默认用UTF-8去解码,所以碰到0xcc这种不符合UTF-8规则的字节就直接报错了。下面给你几个实用的解决办法:
方法1:尝试指定常见编码打开文件
很多非UTF-8的文件会用latin-1、gbk或者cp1252这类编码,你可以挨个试试:
import json # 先试试latin-1编码 with open("test11.json", "r", encoding="latin-1") as file: data = json.load(file) print(data)
如果上面的代码不行,把encoding="latin-1"换成encoding="gbk"再试一次。
方法2:检测文件真实编码(更靠谱)
要是不确定文件到底是什么编码,可以用chardet库来检测,步骤如下:
- 先安装chardet:
pip install chardet
- 运行检测代码:
import chardet # 用二进制模式读取文件,避免编码干扰 with open("test11.json", "rb") as f: detect_result = chardet.detect(f.read()) print("文件检测到的编码是:", detect_result['encoding'])
拿到检测出的编码后,把它放到open函数的encoding参数里,就能正常读取文件了。
方法3:应急忽略错误(不推荐)
如果只是临时想读取数据,不想纠结编码细节,可以用errors参数跳过错误字符,但这种方法可能会丢失部分数据,尽量只在万不得已的时候用:
with open("test11.json", "r", errors="ignore") as file: data = json.load(file)
另外提一句,你最终想把JSON数据存到数据库的话,其实可以用pandas简化流程:用pd.read_json()读取数据(同样可以指定编码),然后直接用df.to_sql()写入数据库,比手动转字典再建表要高效很多,等你解决了编码问题可以试试~
备注:内容来源于stack exchange,提问作者Winrol
相关产品推荐
相关产品推荐

