【发布时间】:2016-08-29 12:45:49
【问题描述】:
我有以下 Python 脚本:
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
print('☺')
当我在我的 Debian 系统上运行它时,它会按预期产生以下输出:
$ ./test.py
☺
$
但是,当我将语言环境更改为“C”时,通过设置LANG 环境变量,脚本会抛出UnicodeEncodeError:
$ LANG=C ./test.py
Traceback (most recent call last):
File "./test.py", line 4, in <module>
print('\u263a')
UnicodeEncodeError: 'ascii' codec can't encode character '\u263a' in position 0: ordinal not in range(128)
$
此问题会阻止此脚本在最小环境中执行,例如在引导期间或在嵌入式系统中。另外,我怀疑许多现有的 Python 程序可以通过使用LANG=C 执行来破坏。 Here's an example 在 Stackoverflow 上的一个程序可能因在“C”语言环境中执行而中断。
这是 Python 中的错误吗?防止这种情况的最佳方法是什么?
【问题讨论】:
-
"这是 Python 中的错误吗?" — 你告诉 Python 在没有 WHITE SMILING FACE 的语言环境中打印它。我不认为这是 Python 的错。
标签: python python-3.x unicode locale