У меня есть база данных Sqlite, в которой есть теги ClipArt, мы переводим эту базу данных на шведский, однако мой запрос к базе данных теперь не возвращает результат, если символы не являются английскими.QSqlQuery с международными символами не возвращает результат
Например, fisk == fish, и это отлично работает, однако öst == east, но это не удается.
Я построения запроса в 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
Что я буду проверять на кодировку Windows? Будет ли это настройка компилятора? –
@Phil: вы привязываете значение переменной тега в свой запрос. Вы задали значение тега в коде или взяты из ввода пользователя? Если он установлен в коде, он имеет кодировку вашего редактора. Если он взят от пользователя (gui), то он имеет системное кодирование. Я не знаю, какой язык Windows вы используете, но вы должны иметь возможность правильной кодировки Google. – zarzych
Оказывается, что я использовал Excel для создания файла csv, который был Latin1, инструмент SQL Admin, который я использовал, указывал правильные символы, но они не были UTF. Я использовал OpenOffice, выбрал UTF8 в качестве значения экспорта, импортированного с помощью инструмента, символы выглядели неправильно, но для моего приложения Qt он отлично работает. Большое спасибо. –