Beim Ausführen von Python CGI mit Lolipop Selbst wenn ich normalerweise Japanisch in die print-Anweisung schreibe, tritt anscheinend ein Fehler auf, der nicht angezeigt werden kann.
Es scheint, dass die Standardausgabe als Pipe behandelt wird und die Codierungsspezifikation ignoriert wird
wk.py
#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys, locale, codecs
print "Content-Type: text/html\n\n"
print 'sys.stdin.encoding: %s\n\n' % sys.stdin.encoding
print 'sys.stdout.encoding: %s\n\n' % sys.stdout.encoding
print '%s\n\n' % sys.getfilesystemencoding()
print '%s\n\n' % sys.getdefaultencoding()
print '%s\n\n' % sys.stdin.encoding
print '%s\n\n' % sys.stdout.encoding
print '%s\n\n' % sys.stderr.encoding
Erzeugt die folgenden Ergebnisse.
sys.stdin.encoding: None
sys.stdout.encoding: None
ANSI_X3.4-1968
ascii
None
None
None
Verwenden Sie die Codierung zwangsweise, um das Ausgabeziel der Druckanweisung zu ändern.
#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys, locale, codecs
print "Content-Type: text/html\n\n"
wk = u"Japanisch anzeigen"
Writer = codecs.getwriter('utf-8')
stdout = Writer(sys.stdout)
print >>stdout, u"%s" % (wk)
Infolgedessen wird die folgende Zeile angezeigt.
Japanisch anzeigen
Recommended Posts