UTF-8はUnicodeを\xxxxっていう1文字が1~3バイトになる変な形式に形式に変換したもので、unicodeをファイルとかに入出力するときに使われるなんですよ。
ずっとその違いがわからなくて、SQLiteCCでTracのデータ覗いたときに、なんでunicodeなのに文字化けするんだろう???って思ってました。 (SQLiteCCはunicodeではなくutf-8をサポートしており、unicodeでSQLiteに保存した文字はSQLiteCCでは表示できなかった)
文字コードって難しい(~ヘ~;)
ちなみに、 Pythonでutf-8をunicodeに変換するには、
text = unicode(text,'utf-8')Shift-jisをunicodeに変換するには、
text = unicode(text,'Shift_JIS')unicodeをutf-8に変換するには、
text = text.encode('utf-8')unicodeをShift-jisに変換するには
text = text.encode('Shift_JIS')とやる。
では、utf-8をShift-jisに変換するには、
text = unicode(text,'utf-8').encode('Shift_JIS')あたりまえすぎて意外とWebを探しても見つからないので。 というか日本語環境でのPython (for Python 2.3 or later)を読んでもなかなか理解できなかった(たぶん俺だけ)。 もちろんJapaneseCodecsは必要。
なお、Windows環境では'mbcs'というWindowsの拡張文字を含んだShift-JIS(CP932)用のCodecが使える。
あと、unicodeを表すCodecとして、'unicode-escape'とか'raw-unicode-escape'いうものも存在する。これは、u'\uxxx\uxxx'とかいうのの文字列部分に変数を使いたいときに使える。\u0001をunicodeにするには、以下の感じで。
code = 1
text = unicode('\\u%04x' % code,'Unicode-Escape')
2006.03.11 | Python | トラックバック(1) | コメント(0) |