gpt4 book ai didi

Python 脚本打印 unicode,在 shell ` ` 中使用导致错误

转载 作者:太空宇宙 更新时间:2023-11-04 07:33:01 25 4
gpt4 key购买 nike

我有一个名为 a.py 的 Python 脚本:

#!/usr/bin/python2.7
# -*- coding: utf-8 -*-
print u''

在 bash 和 tcsh 中:

$ a.py
Ô£øÔ£øÔ£øÔ£ø
$ echo `a.py`
Traceback (most recent call last):
File "a.py", line 3, in <module>
print u'Ô£øÔ£øÔ£øÔ£ø'
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-3: ordinal not in range(128)

错误来自 Python,而不是 shell。在反引号下运行脚本如何影响脚本本身?请注意,如果我在脚本开头将解释器切换到 Python 3,这不是问题。

最佳答案

当 Python 没有检测到它正在打印到终端时,就像在子 shell 中一样,sys.stdout.encoding 被设置为 None。打印 unicode 时,会使用 ascii 编解码器(至少在 Python2 中是这样)。如果 unicode 包含 0-127 之外的代码点,这将导致 UnicodeError。

解决此问题的一种方法是将 PYTHONIOENCODING 环境变量设置为适当的编码。例如:

export PYTHONIOENCODING=utf-8; echo `a.py`

致谢转至 unutbu !

关于Python 脚本打印 unicode,在 shell ` ` 中使用导致错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43192893/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com