Python CGI 无法解码度数符号 (°)
Python CGI Unable To Decode Degree Sign (°)
我有一个可执行的 Python 3.6 CGI 脚本,它是 运行 在 Apache2 服务器上,Ubuntu 18.04.
当脚本试图执行这一行时:
print("<p>Something about latitude x°</p>")
,
它抛出错误:
'ascii' codec can't encode character '\xb0' in position 203: ordinal
not in range(128)
即使编码在 HTML 头中被指定为 UTF-8 <meta charset="utf-8">
。
当我尝试使用 .encode('utf-8')
在字符串上强制使用 UTF-8 时,即
print("<p>Something about latitude x°</p>".encode('utf-8'))
,
错误消失,但度数符号显示为 UTF8 hex
Something about latitude x\xc2\xb0
我尝试在 /etc/environment
中设置环境变量 export PYTHONIOENCODING=UTF-8
并创建了一个全局变量 /etc/profile.d/python-encoding.sh
,然后使用 source
重新加载了两个文件,并重新启动了 Apache2 服务器 systemctl restart apache2
,但无济于事。
CGI 版本:2.6.
在 Apache2 .conf 中声明默认字符集并为 Python 编码设置环境变量就成功了,如此处所述:Python CGI - UTF-8 doesn't work
正如@furas 指出的那样。
我有一个可执行的 Python 3.6 CGI 脚本,它是 运行 在 Apache2 服务器上,Ubuntu 18.04.
当脚本试图执行这一行时:
print("<p>Something about latitude x°</p>")
,
它抛出错误:
'ascii' codec can't encode character '\xb0' in position 203: ordinal not in range(128)
即使编码在 HTML 头中被指定为 UTF-8 <meta charset="utf-8">
。
当我尝试使用 .encode('utf-8')
在字符串上强制使用 UTF-8 时,即
print("<p>Something about latitude x°</p>".encode('utf-8'))
,
错误消失,但度数符号显示为 UTF8 hex
Something about latitude x\xc2\xb0
我尝试在 /etc/environment
中设置环境变量 export PYTHONIOENCODING=UTF-8
并创建了一个全局变量 /etc/profile.d/python-encoding.sh
,然后使用 source
重新加载了两个文件,并重新启动了 Apache2 服务器 systemctl restart apache2
,但无济于事。
CGI 版本:2.6.
在 Apache2 .conf 中声明默认字符集并为 Python 编码设置环境变量就成功了,如此处所述:Python CGI - UTF-8 doesn't work
正如@furas 指出的那样。