현재 전체 텍스트 검색 기능을 갖춘 IOS 앱을 만들고 있습니다. 검색은 sqlite 데이터베이스에서 select 문을 수행하여 수행되지만 데이터베이스의 많은 값에 스칸디나비아 문자 (Æ, Ö, Á 등)가 포함되어 있고 16 진수 값을 가져 오지 않고 명령문을 변환하는 데 문제가 있습니다. 편지들. 여기 북유럽 문자를 보존하면서 SQLite를위한 NSString을 올바르게 인코딩하는 방법
내가 현재하고 있어요 무엇 :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()가 호출되고 기본 SQL Server 2005에서 UTF-16이 호출되면 데이터베이스의 기본 인코딩은 UTF- sqlite3_open16()이 사용되면 바이트 순서. "*.
을 cStringUsingEncoding:
으로 바꾸고 다른 인코딩을 시도하여 다른 인코딩을 사용해 보았습니다. 그들 중 누구도 일하지 않았습니다 (나는 그들을 기대하지 않았지만 적어도 시도하고 싶었습니다).
모든 도움이나 조언을 보내 주시면 감사하겠습니다.
편집 이제 SQLite Database Browser를 사용하여 데이터베이스에서 동일한 SELECT 문을 실행했지만 아무런 결과도 얻지 못했습니다. 이것은 내가 FTS3을 사용하여 내 Customer_Metadata 테이블을 만드는 것과 관련이 있다고 생각하게합니다.
MrDresden
안타깝게도 ICU와 Unicode61을 모두 사용해 본 후에도 결과가 나오지 않습니다. 내가 말한대로 맞춤형 토크 나이저를 만들어야 할 수도 있습니다. – Hrafn