ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

Android DevelopersコミュのAndroid sqliteの文字化けに解決策のご教示のお願い

  • mixiチェック
  • このエントリーをはてなブックマークに追加
初めましてMartyと申します。
不勉強で誠に恐縮でございますが、どなたか解決方法ご存じの方がいらっしゃいましたらお知恵をお借りできたらと思い書き込みさせていただきました。

現在、日本語検定用の勉強のAndroid appsを開発開発中でございます。簡単な仕様は以下の通りで

・データベースに日本語で1, id 2, 問題文 3, 正解 4, 不正解の選択肢 5, 不正解の選択肢 6, 不正解の選択肢 7, 不正解の選択肢

・mainacitivity上でrandomメソッドで乱数を発生させ、ランダムに問題を表示する

・上記DBの3番目のカラムの値を、equalsメソッドで突合し成否の判定をする。

・結果を表示する画面を1枚用意しそこで成否を表示する


といった簡単な作りでございます。

現在解決できなく困っているのは、上記のDBにテーブルを作成し、問題と選択肢のデータを流し込みたいと思っております。

手順といたしましては、ローカル環境でsqliteで同じテーブルを作成し、エクセルで問題と選択肢のデータを作成しcsvで保存。

このままですと文字コードがsjisのため、エディターで開き直し、utf-8nで保存し、.txtでファイルを作成します。

その後、上記文字コードをutf-8nの.txtファイルを、ローカル環境のsqliteにimportしDBを作成します。

ローカル上で作成したsqlite DBをコピーし、Androidの開発環境(SDK + Eclipse 4.3)上のassetsフォルダに格納し

== 抜粋 ==

InputStream in = this.context.getAssets().open(DATABASE_NAME);
OutputStream out = new FileOutputStream(copyFolder + DATABASE_NAME);

// ファイルのコピー
byte[] buf = new byte[1024];
int len = 0;
while ((len = in.read(buf)) > 0) {
out.write(buf, 0, len);
}

でリソースのコピーをプロジェクトに作成するという方法で、コピーを作成するところまでは完成いたしました。

しかしながら、この作成したコピーをLogcatで表示すると文字化けし、またエミュレーター上でも文字化けした状態で表示されてしまいます。。。

散々調べてはみたのですが、どれも解決にたどり着くことができず、こちらに書き込みさせていただきました。

いろいろ不勉強で至らない部分のご指摘があると思いますが、どなたかお知恵をお借りできますと幸いでございます。

何卒宜しくお願いいたします

コメント(1)

問題を切り分けるべきだと思うんだけど、まずデータベースの中身を半角英数字(ASCIIの範囲のみ)にしたら望みの動作をするんですか?
Yes なら、実行時に文字コード変換するか、DB 作成時のどこで想定外のコードになっているのかを調べるか、です。
No なら、DB の import がうまくいっているか調べ、うまくいってないなら sqlite のマニュアルを読み直し、うまく行っているなら apk にバンドルされたバイナリがおかしいかバイナリの取り回しがおかしいのでそれはプロジェクト全体がないと他の人には間違いを指摘することができません。

文字化けといいますが、結局はビット列なので、一般論として、16進表示させてみて、DB のバイナリと一致しているか、sjis か utf8 と解釈すれば正しいのか、を調べてみるといいでしょう。

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

Android Developers 更新情報

Android Developersのメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。

人気コミュニティランキング