Python JSON转储UnicodeDecodeError
我目前有一个程序,可以从一个网站获取足球数据,并将其导入一个Python JSON转储UnicodeDecodeError,python,json,unicode,Python,Json,Unicode,我目前有一个程序,可以从一个网站获取足球数据,并将其导入一个dict: dict5[name] = ['To: ' + toteam, 'From: ' + fromteam, 'Price: ' + price, 'Date: ' + newdate] 该网站使用葡萄牙语,本地编码为UTF-8。图腾、fromteam、price和dates都预先编码为UTF-8,只是与dict中的字符串串联在一起。当我尝试将它转储到类似这样的json文件时,程序运行良好,并毫无问题地打印到stdout w
dict
:
dict5[name] = ['To: ' + toteam, 'From: ' + fromteam, 'Price: ' + price, 'Date: ' + newdate]
该网站使用葡萄牙语,本地编码为UTF-8。图腾、fromteam、price和dates都预先编码为UTF-8,只是与dict中的字符串串联在一起。当我尝试将它转储到类似这样的json文件时,程序运行良好,并毫无问题地打印到stdout
with open('test.json', 'w') as f:
f.write(json.dumps(dict5, indent=2))
…它出现以下错误:
Traceback:....
C:\Python27\lib\json\__init__.py, line 238, in dumps
**kw).encode(obj)
C:\Python27\lib\json\encoder.py, line 203, in encode
chunks = list(chunks)
C:\Python27\lib\json\encoder.py, line 428, in _iterencode
for chunk in _iterencode_dict(o, _current_indent_level):
C:\Python27\lib\json\encoder.py, line 381, in _iterencode_dict
yield_encoder(key)
UnicodeDecodeError: 'utf8' codec can't decode byte 0xc3 in position 0: invalid continuation byte
这本质上是另一个程序的副本,从同一个站点抓取,使用相同的编码,但是其中一个工作正常
我觉得有一些我没有把握的东西。有人能解释一下吗
图腾、fromteam、price和日期都预先编码为utf-8
这是你的问题 总是有用的:以及如何用哪些数据重现这些数据?检查一下,如果
name
是bytestring,那么它也被编码为utf-8。顺便说一句,您可以使用json.dump(dict5,f)
将它们解码为unicode,然后重新编码为本机utf-8进行测试。这是错的吗?我看不出这对倾销有什么影响json@user1549620:JSON与unicode一起工作;因此,传递给json模块的数据也必须是unicode。不要通过测试环传递utf-8编码。好的,我去掉了所有utf-8编码,它工作得很好。因此,作为一般规则,最好将其保存为unicode以用于json目的吗?最好将其保存为unicode
以用于所有目的,除非需要编码。