Pythonと日本語表示と文字コード 其の弐

ここのところは前回と一緒で。

(WindowsXPココから "Python 2.5.1 Windows installer" をインストールした環境でテストしています。)

  • まずは、あなたが書いたコードはutf-8で保存する。そして、そのコードの先頭には以下を記入する。
# -*- coding: utf-8 -*-

あなたはエディタに何を使っていますか? 秀丸、メモ帳、vimmeadow、或いは Python Scriptereclipse ? いずれにしてもファイルを保存する時のエンコードutf-8にすべし。

  • 今日はもうちょっといじくってみる。
# -*- coding: utf-8 -*-

jstr = "パイソン"
kstr = "パイソン"

print jstr
print kstr

if jstr == kstr:
    print "same"
else:
    print "not same"

表示は文字化けするが二つは same 。これは当たり前か。

  • jstr を unicodeにしてみる。
# -*- coding: utf-8 -*- 

jstr = u"パイソン"
kstr = "パイソン"

print jstr
print kstr

if jstr == kstr:
    print "same"
else:
    print "not same"

jstr は文字化けせずに表示される。これは前回もやった。
で、ふたつは same ではない。

  • さらに、kstr を unicode に変換して比べてみる。
# -*- coding: utf-8 -*-

jstr = u"パイソン"
kstr = "パイソン"

kstr = unicode(kstr,'utf-8') #unicodeに変換。

print jstr
print kstr

if jstr == kstr:
    print "same"
else:
    print "not same"

ふたつとも文字化けせずに表示。そして、ふたつは same 。

# -*- coding: utf-8 -*-

jstr = u"パイソン"
kstr = "パイソン"

jstr = jstr.encode('utf-8')

print jstr
print kstr

if jstr == kstr:
    print "same"
else:
    print "not same"

ふたつとも文字化けする。そして、ふたつは same 。

  • まとめ。

 utf-8 って unicode だろ? っていう僕の勝手な思いこみが Python を気持ちよくさせていない原因。
 utf-8unicodeエンコーディング(符号化方式)のひとつである。

# -*- coding: utf-8 -*-

jstr = u"日本語"    #これは unicode
kstr = "日本語"     #これは utf-8

lstr = unicode(kstr,'utf-8')  #lstr は unicode
mstr = kstr.decode('utf-8')   #mstr は unicode
nstr = jstr.encode('utf-8')   #nstr は utf-8