我正在尝试运行具有一些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使用类似的行.