编写 Python 3.1 CGI 脚本时,遇到了可怕的 UnicodeDecodeErrors 错误。但是,在命令行上运行脚本时一切正常。
似乎 open()
和 print()
函数默认使用 locale.getpreferredencoding()
的返回值来确定要使用哪种编码方式。在命令行下运行时,此值为 'UTF-8',这是应该的。但是通过浏览器运行脚本时,编码方式神秘地被重新定义为“ANSI_X3.4-1968”,看起来只是普通 ASCII 的花式名称。
我现在需要知道如何让 CGI 脚本在所有情况下都以“utf-8”作为默认编码运行。我的设置是 Python 3.1.3 和 Debian Linux 上的 Apache2。系统范围内的区域设置为 en_GB.utf-8。
/etc/default/locale
文件中存在类似于LANG="en_US.UTF-8"
的行。 - KlesunLANG
的值为en_US.UTF-8
。我在httpd.conf中设置了PassEnv LANG
,但它不起作用。然后我尝试了SetEnv LANG en_US.UTF-8
,它起作用了。locale.getpreferredencoding()
打印出utf-8
。我不知道为什么? - Jedore