python: getfilesystemencoding() returns shell 和 wsgi 中的不同值

python: getfilesystemencoding() returns different value in shell and wsgi

当我在 shell 中输入 'sys.getfilesystemencoding()' 时,我得到了结果 "utf-8"

>>> 
>>> import sys 
>>> sys.getfilesystemencoding()
'UTF-8'
>>> 

但是当我在 WSGI 脚本中 运行 时,我得到了结果 "ANSI_X3.4-1968"

那为什么不一样呢?

这是由于不同的脚本 environment 造成的。

请注意在以下示例中更改 LC_CTYPE 时会发生什么:

└> LC_CTYPE=ANSI python -c 'import sys; print sys.getfilesystemencoding()'
ANSI_X3.4-1968

└> LC_CTYPE=en_US.UTF-8 python -c 'import sys; print sys.getfilesystemencoding()'
UTF-8

要解决此问题,请将 en_US.UTF-8 值分配给 wsgi 脚本的 LC_CTYPE 环境变量。