我有一个问题,我在
android中搜索我的FTS表,我得到结果返回一个字节偏移量:
col termno byteoffset size 1 0 111 4
但问题是,当使用cursor.getString(colNo)时,它给了我一个UTF-16字符串,之后我无法统计文本的哪个字符是匹配的开始/结束.
解决方法
将您的字符串编码回sqlite使用的相同编码,然后以字节形式提取您想要的部分并将它们转换回字符串:
String chars = cursor.getString(colNo); byte[] bytes = chars.getBytes("UTF-8"); String prefix = new String(bytes,byteOffset,"UTF-8"); String match = new String(bytes,size,"UTF-8"); int charOffset = prefix.length; int charSize = match.length;
(假设您的数据被编码为UTF-8字节,这很可能.)
遗憾的是,您必须完成所有这些冗余编码和解码.或许值得添加优化来缩短纯ASCII常见情况.