我正在使用Spotify库接收Spotify播放列表数据的JSON对象。此播放数据在"name"字段中包含表情符号。当我尝试打印时,这会引发异常。由于某些原因,我甚至无法访问JSON的其他部分。
playlist_data = sp.search(q = 'best of ' + str(year),type = 'playlist',limit = 3)['playlists']
print(playlist_data)
给出错误
Traceback (most recent call last):
File "spotify.py", line 111, in <module>
get_ablum_by_year(i)
File "spotify.py", line 89, in get_ablum_by_year
print(playlist_data)
File "C:UsersjjentAppDataLocalProgramsPythonPython37-32libencodingscp1252.py", line 19, in encode
return codecs.charmap_encode(input,self.errors,encoding_table)[0]
UnicodeEncodeError: 'charmap' codec can't encode character 'u30c4' in position 349: character maps to <undefined>
保留表情符号与此解决方案无关,我只想访问JSON的其余部分,但在这些实例中,我在尝试解析JSON时会出现关键错误。
问题仅出现在print
语句中,是由Windows系统使用cp1252编码引起的。这意味着之前的Spotify调用正确地完成了任务,并检索到1252代码页中缺少的unicode字符。
快速解决方案是在打印前通过errors='replace'
编码并解码回来控制转换
print(str(playlist_data).encode('cp1252', errors='replace').decode('cp1252'))
任何非cp1252字符都将显示为?
。
通过用适当的编码名称替换'cp1252'
,这可以用于任何其他编码。