从qt在SQLite数据库中插入unicode字符串
我正在从qt创建一个SQLite数据库,如下所示:从qt在SQLite数据库中插入unicode字符串,qt,sqlite,character-encoding,Qt,Sqlite,Character Encoding,我正在从qt创建一个SQLite数据库,如下所示: QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE", mConnectionName); db.setDatabaseName("myDattabse.DB"); if (!db.open()) { return false; } 尝试在SQLite数据库中插入马其顿字符时,字符将作为?插入 根据这个链接,我需要用utf-16编码创建数据库来解决我的问题。SQLite的默认编码是ut
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE", mConnectionName);
db.setDatabaseName("myDattabse.DB");
if (!db.open()) {
return false;
}
尝试在SQLite数据库中插入马其顿字符时,字符将作为?
插入
根据这个链接,我需要用utf-16编码创建数据库来解决我的问题。SQLite的默认编码是utf-8。我该怎么做?在我的代码中的何处指定此选项 根据我的理解,您应该可以使用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();
}
现在回到您最初的问题,我相信如果使用函数打开数据库,您可以使用UTF-16中的sqlite数据库作为默认编码。根据QT源代码(qsql_sqlite.cpp QSQLiteDriver),他们正在使用sqlite3_open_v2函数打开与数据库的连接,该连接是UTF-8,但同样,正确使用西里尔字符也没有问题
希望这有帮助,谢谢
"тест1"
"тест2"