执行代码:
49 print(sys.getdefaultencoding()) 50 print('歌单:'+data.get('cdlist')[0].get('dissname')+' 开始写入') 51 52 with open(data.get('cdlist')[0].get('dissname').replace('/','') + '_json.txt', 'w') as f: 53 json.dump(data, f, indent=4) 54 f.close() 55 56 with open(data.get('cdlist')[0].get('dissname').replace('/','')+'.txt', 'w') as f: 57 for song in song_list: 58 f.write(song['songname']+'\n') 59 f.close() PyCharm 会提示("songname"是日文)
utf-8 歌单:百首日语神曲 涤荡心灵的歌声 开始写入 Traceback (most recent call last): File "/Users/zscself/Dropbox/Source/PycharmProjects/QQ_music/main.py", line 58, in <module> f.write(song['songname']+'\n') UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-6: ordinal not in range(128) 如果在 PyCharm 中的 Terminal 中运行 python ./main.py 会多出另外一个错误
Error in usercustomize; set PYTHONVERBOSE for traceback: UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-3: ordinal not in range(128) utf-8 Traceback (most recent call last): File "main.py", line 50, in <module> print('\u6b4c\u5355\uff1a'+data.get('cdlist')[0].get('dissname')+' \u5f00\u59cb\u5199\u5165') UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-8: ordinal not in range(128) 由上面两个错误可以看出
- 直接“ Run ”会导致变量里的非 ASCII 字符无法通过 write()写入文件,但是变量里的非 ASCII 字符可以通过 print()显示
- 如果在间接的在 PyCharm 里的 Terminal 运行'python3 ./main.py'会导致变量里的非 ASCII 字符无法通过 print()显示
真正诡异的是,这段代码可以正常运行在 zsh 里。

