【发布时间】:2015-03-02 19:33:48
【问题描述】:
我有一个数据库,它存储带有葡萄牙语字符的字符串,例如 é、ç、ã。
我在 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 命令行中选择时,字符串打印正确!
【问题讨论】:
-
哪个操作系统?
-
@CL Windows 7。我认为 Notepad++ 参考说明了这一点 :)
-
我虽然 Qt SQLite3 DB 驱动程序对字符串执行了自动编码转换,但您确定您需要对返回的
QString执行任何操作吗?即使没有,从数据库中提取 UTF-8 数据然后调用toUtf8()对我来说似乎很奇怪......
标签: qt encoding utf-8 sqlite character-encoding