android - 从预制 SQLite 阿拉伯语数据库中选择数据

标签 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 编码的,是的,那么是什么原因导致我从几个小时以来一直在努力解决这个问题,现在有什么帮助吗?!!

编辑2 所以我的数据库不是 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 并然后我可以将它们像那样放入我的数据库中,并从中检索数据并且它有效......

最佳答案

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

如果您使用它,您可以存储任何您想要的字符串,而不会出现编码问题。

关于android - 从预制 SQLite 阿拉伯语数据库中选择数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17212858/

相关文章:

android - 可展开的 ListView onGroupExpanded 和 onGroupCollapsed

sqlite - 设置列的默认值 : the value of another column

android - 如何排除 Kotlin 中测试类的显式Api 警告?

java - getContentLength 在尝试获取 XML 文件时返回 -1

ruby-on-rails - 在使用 Selenium 运行 Cucumber 之前,我是否需要运行 Webrick?

Android SQLiteDatabase 插入错误,可能是创建问题

ios - 如何用应用商店中的新版本替换 iOS 应用中预先填充的核心数据?

iphone - libsqlite3.dylib,缺少所需的架构 i386

java - System.currentTimeMillis() 仅每 128 秒更新一次?

java - Intent putExtra 从 PagerAdapter 到 Fragment