文字コード

「入門自然言語処理」です。12章の最初で文字コードの話がガーっと出てきて今ひとつ理解できていなかったが「みんなのPython」の文字コードに関するページをざっと読んで少しは掴めてきた気がする。分かったことを以下雑にメモ。


ASCII...7bitで表現できる範囲で数字、アルファベット、記号を表す。128種類の文字に対応する。

文字列の長さの数え方の違い

>>> ustr = u"abcあいう"
>>> len(ustr)
6
>>> bytestr = ustr.encode("utf-8")
>>> len(bytestr)
12

shift-jis,euc-jp,utf-8等は「8ビット文字列」

ユニコード文字列は8ビット文字列ではない。

「同じユニコードをベースにしていても、utf-8ユニコード文字列は別に扱われる。」
utf-8ユニコード文字集合をコンピュータで扱うときに利用されるエンコード方式」

unicode文字列への変換(decode)

s = "あいうえお"
u = unicode(s, "shift-jis","strict")

or

u= s.decode("shift-jis","strict")

標準出力のときはunicode文字列にしておけば問題なく表示される(自動でshift-jisすなわちcp932にエンコードされている(Windows環境))


12章の頭をこれからもう一度読んでみる次第です。