我正在尝试运行一个包含一些Unicode字符串的python CGI脚本。它在控制台中工作正常,但是当我在浏览器中运行它时会出现以下错误 -
UnicodeEncodeError:' ascii'编解码器不能编码字符' \ u2026'位置198:序数不在范围内(128)
我试过这两个 -
encode('ascii','ignore') unicodedata.normalize('NFKD',var).encode('ascii', 'ignore').strip()
var是保存unicode字符串的变量。
现在如何在浏览器中无错误地打印Unicode或ascii?
答案 0 :(得分:3)
当Python将Unicode字符串打印到控制台时,它通常会检测控制台编码并使用该编码自动编码Unicode字符串。对于CGI,没有终端,因此默认值为ascii
。您可以使用以下命令将stdout
更改为其他编码:
import codecs
sys.stdout = codecs.getwriter('utf8')(sys.stdout.buffer)
您也可以为stderr
使用类似的行。