如何在Python 3 CGI中打印Unicode字符?

3
我正在尝试运行一个包含一些Unicode字符串的Python CGI脚本,在控制台中可以正常工作,但在浏览器中运行时会出现以下错误-
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个回答

5

当Python将Unicode字符串打印到控制台时,通常会检测控制台编码并自动使用该编码对Unicode字符串进行编码。 对于CGI来说,没有终端,因此默认值为ascii。 您可以使用以下方法将stdout更改为另一种编码:

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

你同样可以使用类似的代码行来处理stderr

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接