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 指出的那样。