在windows系统下,创建了一个txt文本文件,写入字符串,保存为utf-8的编码格式。然后修改后缀为.json。
用以下代码load这个json文件
import json
with open(r"./file/test3.json", "r", encoding="utf-8") as f:
data = json.load(f)
print(data)
结果报了如下的错误:
最后发现原因是因为WINDOWS自带的记事本等软件,在保存一个以UTF-8编码的文件时,会在文件开始的地方插入三个不可见的字符(0xEF 0xBB 0xBF,即BOM)。它是一串隐藏的字符,用于让记事本等编辑器识别这个文件是否以UTF-8编码。
使用了两种解决办法,第一种:
import json
with open(r"./file/test3.json", "r", encoding="utf-8") as f:
text = f.read()
if text.startswith(u'\ufeff'):
text = text.encode('utf-8')[3:].decode('utf-8')
data = json.loads(text)
print(data)
第二种使用其他的编辑软件来创建json文件,如Notepad++就可以。