Possible Duplicate:
How to make python 3 print() utf8蟒蛇CGI腳本不會在Linux上
我不能讓蟒蛇CGI打印希伯來文字符在Linux上的Html網頁打印希伯來語。這是一個演示問題的腳本:
#!/usr/bin/python3
print('Content-Type: text/html; charset=utf-8\n\n')
print ('<html><body>')
print ('first')
print ('second')
print ('תמות')
print ('third')
print ('</body></html>')
該文件保存在utf-8(不含BOM)中。我直接從瀏覽器地址欄中調用這個.cgi腳本。輸出是:
first second
而希伯來語單詞和任何後續都失蹤。沒有錯誤顯示在Apache日誌或啓用cgitb
我測試與Apache 2.2和Python 3.2,在Linux的Ubuntu的12.04和分區6,與Firefox,鉻和IE瀏覽器。當然,我可以在任何純HTML頁面上看到希伯來語。在Windows上它工作得很好。
解決方案:
import sys
print (sys.stdout.encoding)
遞給我:
ANSI_X3.4-1968
最後這個解決我的問題:
import sys, codecs
sys.stdout = codecs.getwriter('utf-8')(sys.stdout.detach())
這是另一種選擇:
import sys, io
sys.stdout = io.TextIOWrapper(sys.stdout.detach(), encoding='utf-8')
當你做一個「查看源代碼」時,你看到了什麼? –
源顯示:
第一 第二 – eyaler試着看一下http://stackoverflow.com/questions/3597480/how-to-make-python-3-print-utf8 –