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

时间:2017-07-21 17:52:59

标签: python python-3.x unicode encoding cgi

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

  

UnicodeEncodeError:' ascii'编解码器不能编码字符' \ u2026'位置198:序数不在范围内(128)

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

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

1 个答案:

答案 0 :(得分:3)

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

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

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