【问题标题】:QtSQL reading special charactersQtSQL读取特殊字符
【发布时间】: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


【解决方案1】:

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

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

【讨论】:

  • 我一直认为这也是原因。我现在正在使用 SQLiteStudio 插入这些行,一切顺利!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-18
  • 1970-01-01
相关资源
最近更新 更多