Playstore (stats など) からいくつかの CSV ファイルをダウンロードしており、Python で処理したいと考えています。
cromestant@jumphost-vpc:~/stat_dev/bime$ file -bi stats/installs/*
text/plain; charset=utf-16le
text/plain; charset=utf-16le
text/plain; charset=utf-16le
text/plain; charset=utf-16le
text/plain; charset=utf-16le
text/plain; charset=utf-16le
ご覧のとおり、utf-16le です。
一部のファイルで機能し、他のファイルでは機能しないpython 2.7のコードがあります。
import codecs
.
.
fp =codecs.open(dir_n+'/'+file_n,'r',"utf-16")
for line in fp:
#write to mysql db
これは、次の時点まで機能します。
UnicodeEncodeError: 'ascii' codec can't encode character u'\xf3' in position 10: ordinal not in range(128)
これを行う適切な方法は何ですか?「再エンコード」が cvs モジュールなどを使用するのを見たことがありますが、csv モジュールはそれ自体でエンコーディングを処理しないため、データベースにダンプするだけではやり過ぎのようです。