从预先制作的SQLite阿拉伯数据库中选择数据

时间:2013-06-20 11:48:32

标签: android sqlite

我有一个带有阿拉伯语和英语单词的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中将数据写入其中,请参阅link

感谢。

修改

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 的 所以我的数据库不是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;

将他们的编码转换为可读的编码与android,但不起作用,因为我不知道添加任何人的编码有什么想法?

EDit3: 所以基本上我可以解决这个问题,因为我将记事本中的阿拉伯语单词放在UTF-8中并按下ansi,所以记事本将我的单词转换为utf-8和然后我可以将它们放在我的数据库中,并从中检索数据并且它有效...

1 个答案:

答案 0 :(得分:0)

不要直接写入Android中的数据库。您应该使用ContentProvider。有一个很棒的库,您可以轻松地使用带有ContentProviders的数据库。这是:https://github.com/TimotheeJeannin/ProviGen

如果使用此功能,则可以存储所需的任何字符串,而不会出现编码问题。