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

我正在尝试运行具有一些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?

解决方法:

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

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

您也可以对stderr使用类似的行.

上一篇:Python CGI编程Ⅷ


下一篇:PHP-密码保护文件夹的最佳方法?