まだ片付かない。日本語。
Windows環境でもUTF-8で書くのが良いのか?おれはそうは思えない。
たとえば、こんなコード。
入れた文字を出力する
#encoding:utf-8
a = raw_input("なんかいれて? : ")
print aWindowsの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
ここからわかったこと。