如果我执行下面的Python 3.1程序,我只在浏览器中看到 而不是正确的字符。该文件本身是UTF-8编码的,并且与响应一起发送相同的编码。WSGI内容编码
from wsgiref.simple_server import make_server
page = "<html><body>äöü€ßÄÖÜ</body></html>"
def application(environ, start_response):
start_response("200 Ok", [("Content-Type", "text/html; charset=UTF-8")])
return page
httpd = make_server('', 8000, application)
print("Serving on port 8000...")
httpd.serve_forever()
“UTF-8” 设置正确的响应:
HTTP/1.0 200 Ok
Date: Mon, 09 Aug 2010 16:35:02 GMT
Server: WSGIServer/0.1 Python/3.1.1+
Content-Type: text/html; charset=UTF-8
这里有什么问题?
感谢您的启发。但'return page.encode('utf-8')'不起作用。我从WSGI运行时得到以下错误:'AssertionError:write()参数必须是一个字符串或字节'。 – deamon 2010-08-09 18:10:21
它与'return [page.encode('utf-8')]'一起工作。 – deamon 2010-08-09 18:11:43
是的,对不起,我后来编辑了一些关于'[]'的内容!缺少'[]'的情况比字符串更难以比unicode更好,因为在Python 3中,'b'A'[0]'是整数65,而不是'b'A''。几乎是Python 3最糟糕的错误,IMO。 – bobince 2010-08-09 18:44:17