我有一个包含阿拉伯语和英语单词的 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/