■SQLiteでの日本語の扱い

Windowsのメモ帳で作成した、日本語を含むテキストファイルをsqlite3コマンドで
テーブルにインポートして、さらにAndroidアプリからデータを読み込もうとして、
ハマッてしまったので、そのときの対処法を記しておきます。

まず、Androidで扱う文字コードがUTF-8で、Windowsで扱う文字コードがShift-JIS
であることが、そもそもの問題です。
Windowsのメモ帳でインポートするデータを作成して普通に保存すると、Shift-JIS
で保存されます。

これをインポートした場合、コマンドプロンプトからsqlite3コマンドでデータを

読み込むと問題なく表示されるのですが、Androidアプリの中で読み込むと文字化け

してしまいます。


こうならないために、メモ帳で保存する際に、文字コードをUTF-8にして保存する

必要があります。

具体的には、メモ帳の「ファイル」→「名前を付けて保存」で、”文字コード”を

"UTF-8"にして保存します。

ここで注意しなければならないのは、セパレータをsqliteのデフォルトのパイプ("|")

にしていると以下のようなエラーが発生する可能性があるということです。

    Error: xxxx.txt line 5: expected 2 columns of data but found 3

どうやらこれは、sqliteコマンドがいずれかの文字(2バイト文字)をセパレータとして

認識してしまうことが原因のようです。
この場合、デフォルトのセパレータが"|"(パイプ)で、ASCIIコードの0x7cですが、
エラーが発生した行にあるいずれかの2バイト文字コード(Shift-JIS)がこの"7c"を
含んでいるために起こってしまいます。
したがって、セパレータを"|"ではなく、","等に変更しておく必要があります。

ここまではよかったのですが、実際にメモ帳で"UTF-8"にして保存したファイルを

インポートしようとしたら、今度は以下のようなエラーが発生してどうしても

インポートすることができませんでした。

    SQL error: datatype mismatch

この問題に対しては、結果として原因は究明できていませんが、sqliteのGUIツール

(TkSQLite)を使用することで問題なくインポートできました。
(原因については、わかり次第記述するとにします。)