20150723文字コードまとめ

str型、unicode型の話

軽く触れると、str型はバイト型、unicode型はunicode文字列型 

Python 2系を使用するときは、必ずunicode型にdecodeしてから内部で処理を行う。出力の際はencodeする。

つまり、encodeはunicode型からutf-8やshift-jisに変換すること。decodeはutf-8やshift-jisからunicode型に変換すること。


使用例

UTF-8の標準入力を処理する場合。 unicode_sentence = utf8_sentence.decode("utf-8")


異なる文字コードのファイルを扱う場合の注意点

対象の文字コードが対応しない文字はdecodeまたはencodeエラーとなる。

対処) encodeおよびdecodeのerrosを指定する。string.encode("utf-8", erros="replace")

replaceは対象文字コードに存在しない文字を適当な文字に変換してくれる。ignoreは無視する。標準はstrictで例外を投げる。

これを入力部および出力でやっておけば問題ない。

旧字体や全角記号でエンコードエラーはよくおこる。

あと、utf-8bomにも注意(encoding='utf-8-sig')で開くと自動で処理。

Comments