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指出。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...