我有一个带有阿拉伯语和英语单词的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和然后我可以将它们放在我的数据库中,并从中检索数据并且它有效...
答案 0 :(得分:0)
不要直接写入Android中的数据库。您应该使用ContentProvider。有一个很棒的库,您可以轻松地使用带有ContentProviders的数据库。这是:https://github.com/TimotheeJeannin/ProviGen
如果使用此功能,则可以存储所需的任何字符串,而不会出现编码问题。