- 主题:utf8显示乱码
这年头还有用cgi的。。。。
Python代码最开始先输出个
print("Content-Type: text/plain; charset=UTF-8\r\n")
试试
text/plain 可以改成 text/html 视情况而定
【 在 liduo (利多) 的大作中提到: 】
: win11,apache24 http + cgi + python 3.9
: apache conf文件设置了默认charset为utf-8
: py文件头部声明了coding:utf-8,文件格式也是utf-8无bom
: ...................
--
FROM 221.217.55.*
那后面的内容呢,HTML里还有一个编码声明,如果你声明和实际不符的话就会乱码
【 在 liduo (利多) 的大作中提到: 】
: 这个加了,也不行
--
FROM 61.149.239.*
我大致上知道是怎么回事了。。。
你在 apache 的配置里加一个 SetEnv PYTHONIOENCODING utf-8
应该就行了
【 在 liduo (利多) 的大作中提到: 】
: 都加了,还是乱码;如果这些地方都改为gbk,就能显示
: 页面
: [upload=1][/upload]
: ...................
--
FROM 61.149.239.*
原因就是 Python 解释器会检查运行环境,当你输出 unicode 字符串的时候,会根据
运行环境来 encode,在你加上那个配置之前,Python 认为解释器外的环境是 GBK 的。
就把你输出的内容用 GBK 来编码了。
代码开头的 encoding=utf-8 配置只是声明代码是用 utf-8 存的,影响解释器如何处
理源代码,但管不了解释器如何处理输出。
cgi 的话最好还是不要直接输出 unicode,可以在输出前 encode 一下。主流的 web
框架应该都是做过处理的。
【 在 liduo (利多) 的大作中提到: 】
: 感谢,终于可以了!
--
FROM 61.149.239.*