我有一个带有阿拉伯语和英语单词的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 所以我的数据库不是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:基本上我可以解决这个问题我把阿拉伯语单词放在notepad++中作为UTF-8并按下ansi所以notepad将我的单词转换为UTF-8然后我可以将它们像这样放入我的数据库中并从中检索数据它工作了。
不要直接写入Android中的数据库。你应该使用ContentProvider。有一个很棒的库,你可以很容易地使用数据库与ContentProviders与它。网址:https://github.com/TimotheeJeannin/ProviGen
如果你使用这个,你可以存储任何你想要的字符串,而不会有编码问题。