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
然后会显示汉字。
我的 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 问题。 在 ODBC 配置中,应添加一个 属性 项并将其设置为 TRUE
CHAR_AS_UTF8
然后会显示汉字。