如果在控制檯中運行此代碼 - 它運行良好(它是俄語),但是如果在Apache2服務器上像cgi那樣運行它 - 它會失敗:<type 'exceptions.UnicodeEncodeError'>: 'ascii' codec can't encode characters in position 8-9: ordinal not in range(128)
。該代碼是:爲什麼python-cgi在unicode上失敗?
#!/usr/bin/env python
# -*- coding: UTF-8 -*-
import cgitb
cgitb.enable()
print "Content-Type: text/html;charset=utf-8"
print
s=u'Nikolja \u043d\u0435 \u0421\u0430\u0440\u043a\u043e\u0437\u0438!'
print s#.encode('utf-8')
是,解決方案是取消註釋.encode('utf-8')
,但我花更多的時間去了解爲什麼會發生比,我不能看到答案。
你沒有解釋爲什麼會發生這種情況...... – scythargon 2012-08-01 20:33:36
不建議更改默認編碼。它打破了依靠默認編碼的庫。如果你使用'codecs.getwriter'重新映射'stdout',那麼在任何情況下都不需要。 – 2012-08-01 21:19:41
我同意馬克,我不需要也不想要行sys.setdefaultencoding('utf-8')。 – DrSkippy 2012-08-15 18:06:20