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

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

ロリポップでpythonのcgiを動かす

00:37

レンタルサーバのlolipopで、pythonCGIが動かせるらしいとチラッと見かけたので

ちょっとて見る。

Versionは2.5らしいので、まあまあ。

1) ファイルの拡張子を.cgiに変更する。

index.cgi

--------------------------------------

#!/usr/bin/python

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

print "TEST python!"

--------------------------------------

ファイルを作成して、FTPをする。

アクセス権を700(rxw--)に変更する。

2) 適当なブラウザアクセスする。

下記が1行表示されます。

----------------------

TEST python!

----------------------

どれだけ、ライブラリが使えるか?不明。。。

まあ、これからの遊び道具にはなりそう。

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

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

ゲスト



トラックバック - http://fukuoka-py.g.hatena.ne.jp/nagaetty/20091214