2009-09-14 2 views
1

У меня есть база данных 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

ответ

1

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

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

+0

Что я буду проверять на кодировку Windows? Будет ли это настройка компилятора? –

+0

@Phil: вы привязываете значение переменной тега в свой запрос. Вы задали значение тега в коде или взяты из ввода пользователя? Если он установлен в коде, он имеет кодировку вашего редактора. Если он взят от пользователя (gui), то он имеет системное кодирование. Я не знаю, какой язык Windows вы используете, но вы должны иметь возможность правильной кодировки Google. – zarzych

+0

Оказывается, что я использовал Excel для создания файла csv, который был Latin1, инструмент SQL Admin, который я использовал, указывал правильные символы, но они не были UTF. Я использовал OpenOffice, выбрал UTF8 в качестве значения экспорта, импортированного с помощью инструмента, символы выглядели неправильно, но для моего приложения Qt он отлично работает. Большое спасибо. –

Смежные вопросы