首页 文章

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

提问于
浏览
3

我试图运行一个具有一些Unicode字符串的python CGI脚本 . 它在控制台中工作正常但是当我在浏览器中运行它时会出现以下错误 -

UnicodeEncodeError:'ascii'编解码器无法对位置198中的字符'\ u2026'进行编码:序号不在范围内(128)

我试过这两个 -
encode('ascii','ignore') unicodedata.normalize('NFKD',var).encode('ascii', 'ignore').strip()
var是保存unicode字符串的变量 .

现在如何在浏览器中无错误地打印Unicode或ascii?

1 回答

  • 3

    当Python将Unicode字符串打印到控制台时,它通常会检测控制台编码并使用该编码自动编码Unicode字符串 . 对于CGI,没有终端,因此默认为 ascii . 您可以使用以下命令将 stdout 更改为其他编码:

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

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

相关问题