2008年2月19日火曜日

【Python】UTF-8の基本

pythonの文字コードの扱い方。

まず、勘違いしていたらどうしようもないので一応。
unicode≠utf-8


まぁ、比べること自体無茶なんだけど、一応。

実例 (LinuxのUTF-8モードのターミナルを使用)。
UTF-8なほげ
>>> hoge_utf8 = 'ほげ'
>>> hoge_utf8
'\xe3\x81\xbb\xe3\x81\x92' ←hoge_unicodeと異なる
>>> print hoge_utf8
ほげ

Unicodeなほげ
>>> hoge_unicode = unicode(hoge_utf8, 'utf-8')
>>> hoge_unicode
u'\u307b\u3052' ←hoge_utf-8と異なる
>>> print hoge_unicode
ほげ


printするとどちらも”ほげ”と出力されてしまう。hoge_utf8とhoge_unicodeはもちろん異なる値だ。
unicodeオブジェクトにはencodeとdecodeというメソッドがある。
>>> hoge_unicode.encode('utf-8')
'\xe3\x81\xbb\xe3\x81\x92' ←hoge_utf-8と同じ
>>> hoge_unicode.encode('cp932')
'\x82\xd9\x82\xb0'  ←Shift JISっぽいやつ


ソースファイルにUTF-8で日本語などを書くときは1行目に
# -*- coding: utf-8 -*-

を入れて、UTF-8形式で保存する。

ラベル:

0 件のコメント:

コメントを投稿

登録 コメントの投稿 [Atom]

この投稿へのリンク:

リンクを作成

<< ホーム