2015-03-02 4 views
0

У меня есть база данных, в которой хранятся строки с португальскими символами, такими как é, ç, ã.QtSQL чтение специальных символов

Я редактирую файл с запросами INSERT на Notepad ++ с UTF-8, установленным в качестве кодировки. Я также вставляю в базу данных sqlite3 после установки «PRAGMA encoding =« UTF-8 »».

Теперь, когда я пытаюсь прочитать его в своем приложении Qt, запрос возвращает недопустимые символы. Я делаю такой запрос:

QSqlQuery query; 
QString description; 

query.prepare("SELECT * FROM Training"); 
query.exec(); 

while(query.next()) 
{ 
    description = query.record().field("description").value().toString().toUtf8(); 
    ... 
} 

Я уже пытался без 'toUtf8()', и 'toLatin1()'. Ни один из них не работал. Я получаю только вопросительные знаки или мусор.

EDIT: Когда я выбираю непосредственно из командной строки sqlite3, строки печатаются правильно!

+0

Какая операционная система? –

+0

@CL Windows 7. Я думал, что ссылка Notepad ++ сделала это ясным :) – KuramaYoko

+0

Я, хотя драйвер DB Qt SQLite3 выполнял автоматическое преобразование кодировки в строках, вы _sure_ вам нужно что-либо сделать с возвращенным 'QString'? Даже если это не так, мне кажется странным вытащить данные UTF-8 из БД, а затем вызвать 'toUtf8()' на нем ... – cmannett85

ответ

0

При запуске sqlite3 в консоли Windows символы UTF-8 обрабатываются неправильно.

Для правильного ввода и отображения символов UTF-8 вам необходимо использовать любой другой инструмент.

+0

Я всегда думал, что это была причина. Теперь я использую SQLiteStudio для вставки этих строк, и все прошло отлично! – KuramaYoko

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