ショートストーリー: 私はUTF NSStringとバイトオフセットを持っています。そのバイトオフセットの文字を知りたい。どのようにできるのか?あなたは勇気があるなら以下UTF NSStringの文字位置をバイトオフセットから検出しました(SQLiteオフセット()およびエンコーディングの問題あり)
は長い物語です:
リターンは用語の列内のバイトオフセットthisドキュメントオフセット()関数をよります。私はいくつかのテキストを索引付けしており、そのオフセットを使用して、結果を表示するときにテキストの特定のセクションを指し示します。
このバイトオフセットを使用すると、用語の正しい位置を指すことができないという重大な問題があります。ときどき正しく指し示すこともありますが、時には3/4文字離れていることもあります。私のようなクエリを実行した場合
CREATE VIRTUAL TABLE t1 USING fts4(file, body, page);
は:
SELECT page, body, offsets(t1) from t1 where body match 'and';
私が受け取る:
...........
502|1 0 427 3
505|1 0 370 3 1 0 1307 3 1 0 1768 3
506|1 0 10 3 1 0 1861 3 1 0 2521 3
...........
例として、私はchar型を指す場合
私のテーブルは非常に簡単です427体の私は 'と'の正しい位置を得ていないが、私はそれから2/3の文字を飛び越える。私が370に行っても同じですが、代わりに10に行くと私は正しいポジションになります。
どこが間違っていますか?