我正在尝试使用Python读取包含播放列表中歌曲信息的JSON文件,但在读取韩文和中文字符时似乎遇到了问题?
我的代码如下:
import json
from pprint import pprint
with open('.../playlist.json', encoding="utf-8") as f:
data = json.load(f)
for playlist in data['playlists']:
for item in playlist['items']:
pprint(item['track']['trackName'])
当我运行它时,所有完全是英文的曲目名称都可以打印出来,但对于那些包含韩语或中文字符的曲目名称,我得到一个错误消息:
File "...\parse.py", line 10, in <module>
pprint(item['track']['trackName'])
File "...\AppData\Local\Programs\Python\Python39\lib\pprint.py", line 53, in pprint
printer.pprint(object)
File "...\AppData\Local\Programs\Python\Python39\lib\pprint.py", line 148, in pprint
self._format(object, self._stream, 0, 0, {}, 0)
File "...\AppData\Local\Programs\Python\Python39\lib\pprint.py", line 185, in _format
stream.write(rep)
File "...\AppData\Local\Programs\Python\Python39\lib\encodings\cp1252.py", line 19, in encode
return codecs.charmap_encode(input,self.errors,encoding_table)[0]
UnicodeEncodeError: 'charmap' codec can't encode characters in position 5-6: character maps to <undefined>
编辑:当它命中′
字符时,它似乎也会倒下,给出UnicodeEncodeError:'charmap' codec can't encode character '\u2032'
发布于 2021-03-08 17:00:17
您会重定向输出吗?
Python使用UTF-8作为控制台输出,因此可以打印所有字符。但是当stdout被重定向(例如管道或文件)时,Python会使用ANSI代码页。
您可以将PYTHONUTF8=1
环境变量设置为使用UTF8进行默认文本编码。请参阅https://docs.python.org/3/using/windows.html#utf-8-mode
https://stackoverflow.com/questions/66500694
复制相似问题