
1 TheCure 2015-12-08 15:17:34 +08:00 a = u '中文' |
3 insolo OP @callofmx 将#!/usr/bin/python 改为#!/usr/bin/python2 浏览器可以正常输出内容 默认的 Python 版本是 3.4.3 , Python2 的版本是 2.7.6 加上 u 之后浏览器端两个版本都没有显示内容,也没有报错 交互环境下 Python2 及 python3 都能正常输出内容 |
5 oyjc 2015-12-08 16:19:07 +08:00 python3 默认输出的不是字节文本,所以, print(a.encode()) |
6 est 2015-12-08 16:27:25 +08:00 1. 不要学习 cgi 。这玩意是上个世纪的。 2. 不要在 windows 下用 py 。 |
7 clino 2015-12-08 16:34:37 +08:00 楼主确认你的源代码文件真的是 utf8 的? |
8 insolo OP @oyjc 加上 encode()后有内容输出,但是字节码没法读~ 加上下面的代码后搞定了,虽然不是太理解机制是什么,谢谢各位 import codecs, sys sys.stdout = codecs.getwriter('utf8')(sys.stdout.buffer) |
9 wizardoz 2015-12-08 17:36:41 +08:00 居然用 CGI |
10 fy 2015-12-08 18:16:17 +08:00 楼主,没记错的话 Content-Type: text/html; charset= 是不靠谱的。 编码是在<html><head>里面里面的那个 |
11 gamexg 2015-12-08 18:20:41 +08:00 via Android windows ? print 时会自动根据环境转码的,猜测你的环境不是 utf8 ,所以转出来的不是 utf8 编码。 用手机不方便查,记得 sys 库可以查看系统编码,应该不是 utf8 。 |
12 neoblackcap 2015-12-08 20:03:19 +08:00 Python 有自己的网关接口标准,叫 WSGI ,去看看具体的标准才再开始。 而且切莫重复造轮子,已经有很多 WSGI server ,一般人就是写个 application 的 callback 而已。 |
13 neoblackcap 2015-12-08 20:07:42 +08:00 还有就是显示不出来主要就是编码错误, Python 3 的那个字符串语法那默认是生成 Unicode object 。在输出的时候我们是需要一个二进制的字符串,若非 ascii 的字符串,则会发生解码错误,导致显示不出来(还有的就是你的终端可能不支持对应的编码)。若想正确输出, Python3 在输出前请手动编码一次。 |
14 Zzzzzzzzz 2015-12-08 20:29:39 +08:00 @fy 不, 仅仅是 http resp headers 里 content-type 段没有指明编码的情况下, http meta 里指明的编码才有用. |
15 Zzzzzzzzz 2015-12-08 20:30:11 +08:00 后面一个"http meta"是"html meta", 打错了. |
16 fasling 2015-12-08 20:30:38 +08:00 @est 我最近写的一个玩具程序,在 windows 上跑就好好的,在 mac 上一会儿就各种问题.不知道是我写的问题还是库的问题.大部分挂的时候是在调用 pycurl |
17 yh7gdiaYW 2015-12-08 21:08:51 +08:00 这种问题应该找百度... |
18 julyclyde 2015-12-11 21:56:24 +08:00 |