2

アラビア語と英語の単語を含む 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 に変換し、データベースにそのように配置して、そこからデータを取得し、出来た...

4

1 に答える 1