ファイル保存のエラー
解決するべき問題のメモ。
日本語文字列をファイルに書き込もうとするとエラーになる。
# coding: utf-8 str_uni_exp = u"あいうえお" output = open("test.dat", 'w') S = "%s\n" % str_uni_exp output.write(S) output.close() print str_uni_exp
上のソースの実行結果。
Traceback (most recent call last): File "C:\Documents and Settings\test.py", line 7, in <module> output.write(S) UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-4: ordinal not in range(128)
ASCII文字では問題ないのに。
検索して解決。"python write unicode"で検索、発見。
http://osksn2.hep.sci.osaka-u.ac.jp/~taku/osx/python/encoding.html
# coding: utf-8 import codecs str_uni_exp = u"あいうえお" output = codecs.open("test.dat", 'w', 'utf-8') print type(str_uni_exp) S = "%s\n" % str_uni_exp output.write(S) output.close()
これでOK。
で、読み込み。
import codecs input = codecs.open("test.dat", 'r', 'utf-8') S = input.readlines() print S input.close()
結果は、
[u'\u3042\u3044\u3046\u3048\u304a\n']
ダメだ...。