2017-07-21 32 views
2

我想運行一個Python CGI腳本,它有一些Unicode字符串。它工作在控制檯罰款,但是當我在瀏覽器中運行它,它提供了以下錯誤 -如何在Python 3 CGI中打印unicode字符?

UnicodeEncodeError: 'ascii' codec can't encode character '\u2026' in position 198: ordinal not in range(128)

我已經試過這兩個 -
encode('ascii','ignore') unicodedata.normalize('NFKD',var).encode('ascii', 'ignore').strip()
VAR是保存Unicode字符串變量。

現在如何在瀏覽器中打印Unicode或ascii而沒有錯誤?

回答

1

當Python將Unicode字符串輸出到控制檯時,它通常會檢測控制檯編碼並自動使用該編碼對Unicode字符串進行編碼。對於CGI,沒有終端,因此缺省值爲ascii。您可以通過改變stdout爲另一種編碼:

import codecs 
sys.stdout = codecs.getwriter('utf8')(sys.stdout.buffer) 

您可以使用類似的線stderr爲好。