Я только что присоединился к проекту iPhone с базой данных sqlite3.Существует пользовательская структура локализации, в которой значения хранятся в строках следующим образом:
Id, страна, язык, ключ, значение
1469, FR, FR, KBUTTONS_AssessMyDamage, Évaluerle dommage
Код, который мы используем для получения результата:
NSString* item = @"";
sqlite3_stmt *statement;
if (sqlite3_prepare_v2(database, [[NSString stringWithFormat:@"SELECT Value FROM LocalisedValues WHERE Country='%s' AND Language='%s' AND Key='%s'", country, language, key] UTF8String], -1, &statement, nil) == SQLITE_OK) {
while (sqlite3_step(statement) == SQLITE_ROW) {
item = [NSString stringWithUTF8String: (char *)sqlite3_column_text(statement, 0)];
}
}
Проблема, с которой мы сталкиваемся, заключается в том, что любой результат, в котором столбец значений содержит ударение, Éнапример, возвращает ноль.Удаление акцентированного символа возвращает правильное значение.
Кажется, что сама база данных была создана как UTF8 (попытка получить значения с помощью метода UTF16 возвращает один символ).
Есть ли у кого-нибудь какие-либо идеи о том, чтоможет быть не так с этим?