GETかPOSTかの判断と日本語表示(PYTHON CGI)


■概要 リクエストがGETかPOSTかを判定する。
■詳細 GETだったら画面に「時よ止まれ」、 POSTだったら「そして時は動き出す」と表示します
■ソース #!/usr/bin/python # -*- coding: utf-8 -*- import cgi import os print ('Content-type: text/html; charset=UTF-8') print ("\r\n\r\n") #os.environ['REQUEST_METHOD'] で取れる if ( os.environ['REQUEST_METHOD'] == "GET" ): print ("時よ止まれ") elif ( os.environ['REQUEST_METHOD'] == "POST" ): print ("そして時は動き出す")
■結果 Internal Server Error あ、あれ?
■調査 エラーログ確認 tail /usr/local/apache2/logs/error.log
■答え Non-ASCII character あー、文字コードが違ったか
■改修 vim world.cgi set fenc=utf-8 :wq
■結果 何も表示されない あ、あれ?
■調査 ここを見る http://osksn2.hep.sci.osaka-u.ac.jp/~taku/osx/python/encoding.html codecsでout時の文字コードを指定する必要があるらしい
■ソース #!/usr/bin/env python # -*- coding: utf-8 -*- import cgi import os import sys import codecs sys.stdout = codecs.getwriter('utf_8')(sys.stdout) print ('Content-type: text/html; charset=UTF-8') print ("\r\n\r\n") if ( os.environ['REQUEST_METHOD'] == "GET" ): print (u'時よ止まれ') elif ( os.environ['REQUEST_METHOD'] == "POST" ): print (u'そして時は動き出す')
■結果 時よ止まれ


戻る