【发布时间】:2017-07-25 00:13:30
【问题描述】:
我正在用 python 编写一个脚本,该脚本生成包含 utf-8 字符的输出,尽管大多数 linux 终端默认使用 utf-8,但我正在编写代码,假设它不在 utf-8 中(以防用户出于某种原因更改了它)。
根据我的测试,os.environ["LANG"] = "en_US.utf-8" 不会改变系统环境变量,它只会改变 Python 内部的数据结构。
【问题讨论】:
-
你为什么不只是
.encode(sys.stdout.encoding)你的Unicode输出?否则,请参阅man 5 locale;基本上你需要设置一个环境变量然后运行你的程序。 -
其实用
LANG=en_US.utf-8可以解决,但是由于某种原因我不能和os.system("LANG=en_US.utf-8")、subprocess.call("LANG=en_US.utf-8", shell=True)或者subprocess.Popen("LANG=en_US.utf-8", shell=True)一起使用 -
这是因为它不是可执行文件! Pass
envtoPopeninstead. -
你是对的。
LANG实际上是一个环境变量,我试图从 Python 脚本中更改它的值。我尝试使用env作为Popen()的参数。它返回0。我重新表述了这个问题及其细节,以澄清我需要什么。 -
subprocess.call("export LANG=en_US.utf-8", shell=True)会启动一个子进程,给子进程设置环境,然后杀死子进程。它不会产生任何影响 - 您不能从子进程更改环境。
标签: python linux encoding utf-8