私は現在、全文検索を行う IOS アプリに取り組んでいます。検索は sqlite データベースで select ステートメントを実行することによって実行されますが、問題は、データベース内の値の多くにスカンジナビア文字 (Æ、Ö、Á など) が含まれており、16 進値を取得せずにステートメントを変換するのに問題があることです。文字のために。
これが私が現在行っていることです:
const char *sql = [[NSString stringWithFormat:
@"SELECT %@\
FROM Customer c\
JOIN Customer_Metadata cm ON c.CustomerId = cm.CustomerId\
WHERE cm.Name LIKE '%%%@%%'\
ORDER BY cm.Name", kCustomerSelect, searchString] UTF8String];
ここで、kCustomerSelect は選択する列を含む定数であり、searchString はユーザー入力を含みます。
これは通常のラテン文字の魅力のように機能しますが、たとえば Ö を searchString として渡すと、st\xc3\xb6 が得られます。UTF8 でエンコードされた文字列を単にログアウトしても、文字列が正しく表現されないことは承知していますが、問題は、select ステートメントで結果が得られないことです。
クエリを実行する前に sqlite3_open() を呼び出しています。SQLite のドキュメントから *"データベースのデフォルトのエンコーディングは、sqlite3_open() または sqlite3_open_v2() が呼び出された場合は UTF-8 になり、sqlite3_open16 の場合はネイティブ バイト オーダーで UTF-16 になります。 () 使用されている。"*。
さまざまなエンコーディングに置き換えUTF8String
てcStringUsingEncoding:
試してみることで、さまざまなエンコーディングを使用してみました。それらのどれも機能していません (期待していたわけではありませんが、少なくとも試してみたかったのです)。
すべてのヘルプ、またはヒントをいただければ幸いです。
編集 SQLite Database Browser を使用して、データベースで同じ select ステートメントを実行しようとしましたが、結果が得られません。これは、FTS3 を使用して Customer_Metadata テーブルを作成したことと関係があるのではないかと考えさせられます。
MrDresden