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=utf-8 是不靠谱的。
编码是在<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
|