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'そして時は動き出す')
■結果
時よ止まれ
戻る