从 Gedit 与终端执行“unicode”Python 脚本

从 Gedit 与终端执行“unicode”Python 脚本

从屏幕截图可以看出,从终端和 Gedit 运行的相同脚本的行为不同 - 在终端脚本执行成功,但在 Gedit 中却引发错误:

在此处输入图片描述

但如果我python在 Gedit 工具管理器中更改为PYTHONIOENCODING=utf-8 python,那么脚本也将从 Gedit 正常执行

为什么会这样?终端中的哪种设置可以让 python“unicode”代码顺利执行?


当我添加赏金时,只是为了更新:不仅仅是 GEdit,而且在 SciTE 中也会出现错误,但在 Geany 中不会出现,因为 Geany 通过终端执行 Python 脚本

答案1

终端允许 python“unicode”代码无问题执行,因为它已 sys.stdout.encoding正确设置。

我把脚本改成如下形式:

#! /usr/bin/env python
# -*- coding: utf-8 -*-

import sys

print sys.stdout.encoding
print u"富强"

在 Gedit 中运行,输出为:Nonefor sys.stdout.encoding

在终端中运行,输出UTF-8sys.stdout.encoding并且字符串正确打印。

但是,如果我将区域设置LC_CTYPE从更改en_US.UTF-8C,并使用 在终端中运行它LC_CTYPE=C ./test.py,我会得到以下信息:

ANSI_X3.4-1968
Traceback (most recent call last):
  File "./test.py", line 7, in <module>
    print u"富强"
UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)

sys.stdout.encoding设置为 ASCII,因此无法处理字符串。

相关内容