Qt ODBC 操作excel文件,获取表明中文乱码问题
由于excel文件很大,用QAxObject处理非常非常慢,用的是网上下载的ExcelEngine类。所以打算改用odbc,但是遇到了一个问题。excel的sheet是中文命名的,如图所示
读取代码如下:
dsn = QStringLiteral( "DRIVER={Microsoft Excel Driver (*.xls)};DSN='';FIRSTROWHASNAMES=1;READONLY=FALSE;DBQ=%1").arg(strFileName);
m_db.setDatabaseName(dsn);
bool isOpen = m_db.open();
if(isOpen)
{
qDebug()<<"success open excel file:"<<strFileName;
m_sheetLists = m_db.tables(QSql::AllTables);
}
其中
m_db是QSqlDatabase
dsn 和 strFileName是QString
m_sheetLists 是QStringList
结果,用odbc读出来的表格内容变成
所有中文变成乱码
使用的是qt 5.0.2 with vs2010
于是我想是不是编码问题,于是就进行转换,我打算遍历所有编码看看是哪一种
QStringList sheetNameLists = m_db.tables(QSql::AllTables);
qDebug() << sheetNameLists;
QList<QByteArray> code = QTextCodec::availableCodecs();
for(int j = 0; j < code.size(); ++j)
{
qDebug() << code.value(j) << "-------------------------------------";
for(int i = 0; i < sheetNameLists.size(); ++i)
{
QTextCodec *codec = QTextCodec::codecForName(code.value(j));
QString text_str = codec->toUnicode(sheetNameLists.value(i).toLatin1());
qDebug() << text_str;
}
}
运行后输出结果:
发现没有一个是,现在就不清楚如何处理了。
就是在读取表格这里出了问题,在读取内容里面有中文没有什么影响,能正常显示 乱码 编码 odbc excel qt --------------------编程问答-------------------- 亦或者我的转换编码出了问题
--------------------编程问答-------------------- QStringList都已经是乱码,说明获取表名时转码为QString就已经错误。再怎么转都没有用的.
调试一下qsql_odbc.cpp中的qGetStringData函数返回的buf内容.
补充:移动开发 , Qt