アラビア語と英語の単語を含む SQLite(s3db) データベースがあり、そこにローカルを en_US として配置し、そこからアラビア語のデータを取得しようとしていますが、文字の代わりに記号を取得できません。どうすればよいですか?検索したところ、UTF-8または..のエンコードに取り組む必要があることがわかりましたが、詳細や有用な情報は見つかりませんでした。助けが必要です.
私のコードは次のとおりです。
public String getResult(int id)
{
String name = null;
try
{
Cursor c = null;
c = bdd.rawQuery("select Title from List where _id="+id, null);
c.moveToFirst();
name = c.getString(c.getColumnIndex("Title"));
c.close();
}
catch(Exception e)
{
e.printStackTrace();
}
return name;
}
事前に作成されたSQLiteデータベースを使用したため、Androidの外部からデータを書き込んだリンクを参照
ありがとう。
編集:
I inserted that:
byte[] b;
b = c.getBlob(c.getColumnIndex("Title"));
name=b.toString();
name=new String(b,"UTF-8");
instead of:
name = c.getString(c.getColumnIndex("Title"));
だから今、ブラックボックスに疑問符が表示されています.データベースがUTF-8でエンコードされているかどうかを確認しました.はい、何時間も前から本当にこれに取り組んでいる原因は何ですか?!!
EDIT2 SO 私のデータベースは utf-8 でエンコードされていません。アラビア語は ansi または iso.. として書かれています。
name = new String(c.getBlob(c.getColumnIndex("Title")), "UTF-8");
byte[] chars = name.getBytes("ISO-8859-1");
String utf8 = new String(chars,"ISO-8859-1");
name=utf8;
彼らのエンコーディングをアンドロイドで読み取り可能なエンコーディングに変換することはできませんでしたが、どのエンコーディングを追加すればよいかわからないため、それはうまくいきませんでした。
編集 3:基本的には、アラビア語の単語を UTF-8 としてメモ帳 ++ に配置し、ansi を押すと、これを解決できたので、メモ帳は単語を utf-8 に変換し、データベースにそのように配置して、そこからデータを取得し、出来た...