Насколько я понимаю, у вас должно быть все в порядке с UTF8, пожалуйста, проверьте, подойдет ли вам приведенный ниже пример:
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName(":memory:");
if( !db.open() )
{
qDebug() << db.lastError();
qFatal( "Failed to connect." );
}
QSqlQuery query;
query.prepare("CREATE TABLE IF NOT EXISTS names (id INTEGER UNIQUE PRIMARY KEY, test_field VARCHAR(30))");
query.exec();
query.prepare(QObject::trUtf8("INSERT INTO names (id, test_field) VALUES (1, 'тест1')"));
query.exec();
query.prepare(QObject::trUtf8("INSERT INTO names (id, test_field) VALUES (2, 'тест2')"));
query.exec();
QSqlQuery select("SELECT test_field FROM names");
while (select.next())
{
qDebug() << select.value(0).toString();
}
вывод должен быть:
"тест1"
"тест2"
теперь вернемся кВаш первоначальный вопрос, я полагаю, вы можете использовать базу данных sqlite в UTF-16 в качестве кодировки по умолчанию, если база данных открывается с помощью функции sqlite3_open16 .Согласно исходному коду QT (qsql_sqlite.cpp QSQLiteDriver) они используют функцию sqlite3_open_v2 для открытия соединения с базой данных, которая является UTF-8, но, опять же, в этом нет ничего плохого для правильной работы с символами кириллицы.
надеюсь, это поможет, с уважением