QSqlQuery с международными символами не возвращает результат - PullRequest
1 голос
/ 14 сентября 2009

У меня есть база данных Sqlite с тегами ClipArt, мы переводим эту базу данных на шведский, однако мой запрос к базе данных теперь не возвращает результат, если символы не являются английскими британскими.

Например, fisk == fish, и это прекрасно работает, однако öst == восток, но это не получается.

Я строю запрос в QString из QLineEdit:

    sqlStatement += QString(" FileID IN (SELECT TLFileID FROM tblTags "
            " INNER JOIN tblTagLinks ON tagId = TLTagId "
            " WHERE tagLanguage LIKE '%1' "
            " AND (tagName LIKE '%2' OR tagName LIKE '%2s' "
            " OR tagLangSWEDISH LIKE '%2' "
            " OR tagLangFINNISH LIKE '%2' "
            " OR tagLangITALIAN LIKE '%2' ))").arg(defaultLanguage, tag);

и затем преобразование его в QSqlQuery:

qryFiles.prepare(sqlStatement);

if(!qryFiles.exec())

Я знаю, что в базе данных есть символы, потому что я импортировал и экспортировал данные в CSV для переводчиков, используя инструмент администрирования Sqlite и Excel.

Должен ли я открыть базу данных особым образом?

Я использую Qt 4.5.2, Windows XP, VS2008, Sqlite 3.5.1

1 Ответ

1 голос
/ 14 сентября 2009

Я знаю, что это может быть очевидно, но вы проверили, какой набор символов использует ваша БД и ваше приложение? Я полагаю, что вы используете родную кодировку Windows в одном и UTF8 в другом.

Извините за очевидный ответ, но это является причиной большинства моих проблем с интернационализацией.

...