QtSQL读取特殊字符
我有一个数据库,它存储带有葡萄牙语字符的字符串,如é、ç、ã 我使用Notepad++上的INSERT查询编辑该文件,并将UTF-8设置为编码。在设置了“PRAGMA encoding=“UTF-8”之后,我还会在sqlite3数据库上插入 现在,当我尝试在Qt应用程序上读取它时,查询返回无效字符。我执行以下查询: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(
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插入这些行,一切都很顺利!