使用Sqlite3和Android Studio查询西里尔文数据

时间:2016-05-16 11:27:27

标签: android sql android-studio encoding sqlite

我正在尝试从sqlite3数据库中过滤一些记录,但结果不正确。 对于输入,我有一个西里尔字符串。在数据库中,所有字符串都编码为UTF8,因此它们看起来像“%D0%A5%D0%90%D0%93 ......”。 我将输入字符串编码为UTF8并查询数据库。 Android studio中的代码是这样的:

   String where = (Upper(name) like '%" + URLEncoder.encode(lookFor.toUpperCase(), "UTF-8") + "%');

   DB.query("Clients",
             new String[]{"name", "saldo", "db_id", "_id"},
             where,
             null,
             null,
             null,
             null);

查询返回结果,但它们之间有许多无效记录。我是正确解决问题还是错过了什么?

1 个答案:

答案 0 :(得分:0)

这不是UTF-8编码,而是URL编码。

百分号被LIKE用作模式字符,因此这是可以选择的最不合适的编码。

最好的想法是不对字符串进行编码; SQLite和Android处理普通的Unicode字符串就好了。 但是如果你必须以这种方式保存数据库内容,你可以告诉LIKE使用ESCAPE clause的不同模式字符。