在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++就可以。