まだ片付かない。日本語。
Windows環境でもUTF-8で書くのが良いのか?おれはそうは思えない。
たとえば、こんなコード。
入れた文字を出力する
#encoding:utf-8 a = raw_input("なんかいれて? : ") print a
Windowsのcmd.exeから実行してみる
C:\pyhton>python jp.py 縺ェ繧薙°縺・l縺ヲ? : シフトJIS シフトJIS
期待通り化けてくれる。Pythonは期待を裏切らない。
化けた理由は? raw_inputが変換しない。
そして、入力文字が化けない理由は?
print 関数がシステムデフォルトにエンコードしてくれるから?それとも入ったまま出てきてるから?
じゃぁ、調べてみましょう。
日本語を比較する。
# -*- encoding: utf-8 -*- a = raw_input("input something?:") if( a == "あ"): print True else: print False
実行すると
C:\pyhton>python jp.py input something?:あ False
さぁ、これはどういうことだろうね。
じゃぁ次にすべてshift_jisでやってみよう
# -*- encoding: shift_jis -*- a = raw_input("input something?:") if( a == "あ"): print True else: print False
ちゃんと、shift_jis(ms932)を確認して、実行
C:\pyhton>python jp.py input something?:あ True
ちゃんとTRUEがでる。Pythonは期待を裏切らない。
さて、どういうことだろうね。
shift_jisでこんな風に書いてみる。
# -*- encoding: utf-8 -*- a = raw_input("input something?:") if( a == u"あ"): print True else: print False
実行すると?
C:\Documents and Settings\takuya\デスクトップ\pyhton>python jp.py input something?:あ jp.py:4: UnicodeWarning: Unicode equal comparison failed to convert both arguments to Unic ode - interpreting them as being unequal if( a == u"縺・): False
ここからわかったこと。