Mir*_*ac7 6 python unicode locale utf-8 python-3.x
我的一些应用程序库依赖于能够将 UTF-8 字符打印到 stdout 和 stderr。因此,这不能失败:
print('\u2122')
Run Code Online (Sandbox Code Playgroud)
在我的本地机器上它可以工作,但在我的远程服务器上它引发 UnicodeEncodeError: 'ascii' codec can't encode character '\u2122' in position 0: ordinal not in range(128)
我试过$ PYTHONIOENCODING=utf8没有明显效果。
sys.stdout = codecs.getwriter("utf-8")(sys.stdout.detach())
Run Code Online (Sandbox Code Playgroud)
工作了一段时间,然后停止并最终失败 ValueError: underlying buffer has been detached
sys.getdefaultencoding()返回'utf-8', 并sys.stdout.encoding返回'ANSI_X3.4-1968'
我能做什么?我不想编辑第三方库。
来自@ShadowRanger 对我的问题的评论,
PYTHONIOENCODING=utf8除非您使用export它(或在 Python 启动前加上它),否则将无法工作。否则,它是一个局部变量,bash因为它不会在子进程的环境中继承。export PYTHONIOENCODING=utf-8将在bash.
export PYTHONIOENCODING=utf-8 成功了,UTF-8 字符不再引发 UnicodeEncodeError
| 归档时间: |
|
| 查看次数: |
2208 次 |
| 最近记录: |