QtSQL读取特殊字符

QtSQL读取特殊字符,qt,encoding,utf-8,sqlite,character-encoding,Qt,Encoding,Utf 8,Sqlite,Character Encoding,我有一个数据库,它存储带有葡萄牙语字符的字符串,如é、ç、ã 我使用Notepad++上的INSERT查询编辑该文件,并将UTF-8设置为编码。在设置了“PRAGMA encoding=“UTF-8”之后,我还会在sqlite3数据库上插入 现在,当我尝试在Qt应用程序上读取它时,查询返回无效字符。我执行以下查询: QSqlQuery query; QString description; query.prepare("SELECT * FROM Training"); query.exec(

我有一个数据库,它存储带有葡萄牙语字符的字符串,如é、ç、ã

我使用Notepad++上的INSERT查询编辑该文件,并将UTF-8设置为编码。在设置了“PRAGMA encoding=“UTF-8”之后,我还会在sqlite3数据库上插入

现在,当我尝试在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()”。这些都不起作用。我只得到问号或垃圾

编辑:
当我直接从sqlite3命令行选择时,字符串打印正确

在Windows控制台中运行
sqlite3
时,UTF-8字符处理不正确


要正确输入和显示UTF-8字符,您必须使用任何其他工具。

哪个操作系统?@CL Windows 7。我认为记事本++的参考说明了这一点:)尽管Qt SQLite3 DB驱动程序对字符串执行了自动编码转换,但您确定需要对返回的
QString
执行任何操作吗?即使没有,从数据库中取出UTF-8数据,然后对其调用
toUtf8()
,对我来说似乎很奇怪……我一直认为这也是原因所在。我现在使用SQLiteStudio插入这些行,一切都很顺利!