如果我執行下面的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