【发布时间】:2019-08-30 05:22:43
【问题描述】:
为了修复 the bug 并快速打包 Python 应用程序,我准备添加以下代码:
# I don't know what I am doing
export LC_ALL=C.UTF-8
export LANG=C.UTF-8
lot of text 似乎解释了 LC_ALL=C 的作用(但不是 LC_ALL=C.UTF-8 或 LANG=C.UTF-8)和 big text 解释了错误和 Python 行为。但它们都不适合我的小脑袋。通常我喜欢把脑袋绕在血腥的技术细节上,但最近是time pressure makes me rather ignorant。
我只想知道This system supports the C.UTF-8 locale这句话是什么意思,如果我设置这些变量切换到它会发生什么? (我猜是通过设置那些环境变量来实现的)
【问题讨论】:
-
在 Python 3 中,
sys.std*的编码是在运行时通过一些涉及 env 变量(如LC_ALL)的启发式方法设置的。如果我正确理解您的情况,您可以通过检查locale.getpreferredencoding()的值来检查这是否有效。它应该类似于“UTF-8”。 -
注意:您应该检查您的语言环境是否支持 C-UTF8。现在它已经过时了,C 在许多系统中都是 UTF8。在某些系统上,语言环境是“UTF8”,而在某些系统上是“UTF-8”(python 支持这两种语法,但不支持语言环境实用程序。
locale -a显示您安装了哪个本地环境。UTF-8 语言环境会破坏很多实用程序有非 UTF-8 文本(所以无效序列)
标签: utf-8 environment