Python CGI无法解码度数符号°

问题描述

我有一个可执行的Python 3.6 CGI脚本,该脚本正在Apache2服务器Ubuntu 18.04上运行。

当脚本尝试执行此行时: print("<p>Something about latitude x°</p>"), 它会引发错误

'ascii'编解码器无法在位置203处编码字符'\ xb0':序数 不在范围内(128)

即使在HTML头中使用<Meta charset="utf-8">将编码指定为UTF-8。

当我尝试用.encode('utf-8')对字符串强制使用UTF-8时,即

print("<p>Something about latitude x°</p>".encode('utf-8'))错误消失了,但度数符号显示为UTF8十六进制

关于纬度x \ xc2 \ xb0

我尝试在export PYTHONIOENCODING=UTF-8中设置环境变量/etc/environment,并创建了一个全局变量/etc/profile.d/python-encoding.sh,然后使用source重新加载了两个文件,并重新启动了Apache2服务器{{1} },但无济于事。 CGI版本:2.6。

解决方法

在Apache2 .conf中声明默认字符集并为Python编码设置环境变量可以达到目的,如此处所述:Python CGI - UTF-8 doesn't work

@furas指出。