Hatena::Groupfukuoka-py

nagaetty.py

2009-12-14

lolipopでpython 日本語を表示する方法

00:39

前回、何とかlolipopでpythonCGIを動かす方法までは、わかったが

どうやら普通にprint文で日本語を記述してもエラーになって

表示できないことがわかった。

原因は、標準出力がパイプ扱いになってエンコードの指定が無視されて

しまうことによるものらしい。

#!/usr/bin/python

# -*- coding: utf-8 -*-

import sys, locale, codecs

print "Content-Type: text/html\n\n"

print 'sys.stdout.encoding: %s\n\n' % sys.stdout.encoding

print 'sys.stdin.encoding: %s\n\n' % sys.stdin.encoding

print '%s\n\n' % sys.getfilesystemencoding()

print '%s\n\n' % sys.stdin.encoding

print '%s\n\n' % sys.stdout.encoding

print '%s\n\n' % sys.stderr.encoding

print '%s\n\n' % sys.getdefaultencoding()

を実行すると,下記の結果になる。

sys.stdout.encoding: None

sys.stdin.encoding: None

ANSI_X3.4-1968

None

None

None

ascii

そこで、強制的にエンコードを使って、print文に若干の

小細工を実施する必要がある。

#!/usr/bin/python

# -*- coding: utf-8 -*-

import sys, locale, codecs

print "Content-Type: text/html\n\n"

a = u"いろいろ考えて苦労してようやく、日本語が表示できました。"

Writer = codecs.getwriter('utf-8')

stdout = Writer(sys.stdout)

print >>stdout, u"%s, %d" % (a,10)

結果として下記の行が表示される。

いろいろ考えて苦労してようやく、日本語が表示できました。, 10

これで、まずは日本語の課題がクリアできた。

TejpalTejpal2012/02/22 19:46Life is short, and this aritcle saved valuable time on this Earth.

qnehyvxqnehyvx2012/02/25 21:26v9gULo , [url=http://lroywdxbgybv.com/]lroywdxbgybv[/url], [link=http://tnruffxtguuf.com/]tnruffxtguuf[/link], http://rxxkesljhlow.com/