を、最近やっと知りました。
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) |
トラックバックURL↓
http://weekbuild.blog39.fc2.com/tb.php/27-283c62f2
[Python]unicode変換
昨夜、勉強になりそうなpythonのソースコードをネットで探していたところ、次のものが見つかりました。 http://python.blog-slime.com/2007/08/pythongoogle.html#more 朝、印刷をして、仕事場で休憩中などにソースコードを眺め、仕事から戻って実際に試してみたところ
2007.10.25 00:25 | hirono_hideki 日暮途遠