QSqlQueryModel获取中国特色的空白单元格

QSqlQueryModel get blank cell for chinese charcteristic

我的 GUI 应用程序中有一个 QSqlQueryModel 从 SAP HANA 数据库中检索数据并将其与 QTableView 小部件绑定。

当我将查询设置为 select 维度 table 时,我使用了 QODBC 驱动程序并在 Windows.But 的 ODBC 数据源 (64) 位中配置了一个 ODBC 项目,我可以得到数据库中的数据,但包含中国特色的单元格现在在table视图中都是空白。

这是代码:

self._db = QSqlDatabase.addDatabase("QODBC3")
self._db.setDatabaseName(self._odbc+";SCROLLABLERESULT=TRUE;encoding='utf-8'")
self._db.setUserName(self._user)
self._db.setPassword(self._password)
# 打开数据库,如有报错则显示
if not self._db.open():
    QMessageBox.critical(self, "Database Error", self._db.lastError().text())
    return
# 获取要执行的SQL
_sql = self._generateSQLStatement()
self._model = QSqlQueryModel()
self._model.setQuery(_sql, self._db)
if self._model.lastError().isValid():
    QMessageBox.critical(self,"Database Error", self._model.lastError().text())
    return
self._ui.tableView.setModel(self._model)

这是结果截图:

红色矩形的单元格应该显示中国特色,但现在是空白。

-----更新------

好吧,我打开了一个 odbc 跟踪,我发现了一个 sql 错误:

DIAG [S1000] [SAP AG][LIBODBCHDB DLL][HDBODBC] General error;-10427 Conversion of parameter/column (2) from data type NVARCHAR to ASCII failed (-10427)

这个错误好像是汉字无法转换成ascii

但是为什么QSqlQueryModel会出现这个问题呢?我尝试将 SQLite 文件与中文一起使用,QSqlQueryModel 可以检索中文数据。

我检查了这个 post : 并跳转到 HANA ODBC 连接属性文档。

这是一个 HANA ODBC 问题。 在 ODBC 配置中,应添加一个 属性 项并将其设置为 TRUE

CHAR_AS_UTF8

然后会显示汉字。