Qt读取sqllite乱码,转换编码也没用

l470080245 2012-08-07 09:22:20
这个数据库我用SQLiteSpy查看时,有些中文正常,但有些中文是乱码的。然后用Qt去读取的时候,怎么转换都不能把乱码变成正常。给我这个数据库的人说,是因为以前写入的时候有些是gbk字符,有些是utf-8,所以会这样。。可我试了网上的那些编码转换函数,都没有作用。希望大家帮帮忙。

我用的代码如下:

#include <QtCore/QCoreApplication>
#include <QTextCodec>

#include <Qtsql/QSqlDatabase>
#include <Qtsql/QSqlError>
#include <Qtsql/QSqlQuery>

int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);

QSqlDatabase *SqliteDb;
SqliteDb = new QSqlDatabase(QSqlDatabase::addDatabase("QSQLITE","SqliteDb"));
SqliteDb->setDatabaseName("files.db");
SqliteDb->open();
QString SqlText = "SELECT FileName,Title FROM files" ;
qDebug(SqlText.toAscii());

QSqlQuery Query(*SqliteDb);
bool Result = Query.exec(SqlText);
if (!Result)
{
qCritical("SqliteDB Query Failed:%s",SqlText.toAscii().constData());
};

QString tmp, tmp2;
while(Query.next())
{
tmp = Query.value(0).toString();
tmp2 = Query.value(1).toString();
qDebug(tmp.toAscii().data());
qDebug(tmp2.toAscii().data());
}

return a.exec();
}



使用的sqllite的数据库文件,在这里http://dl.dbank.com/c0ufxgyf8m
...全文
506 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
willis_326 2012-08-13
  • 打赏
  • 举报
回复
我之前用mysql的时候也遇到这个问题,我的解决办法是这个:http://blog.csdn.net/stormwy/article/details/7853464
不知道对你有没有帮助。
l470080245 2012-08-13
  • 打赏
  • 举报
回复
我晕,忘了华为网盘要登录才能下载
http://kuai.xunlei.com/d/WAJXWHJRQWYE
这是迅雷快传的,不用账号就可以下载了
selina6874 2012-08-13
  • 打赏
  • 举报
回复
楼主提供的数据库链接 无法下载。
你试一下 tmp = tr(Query.value(0).toByteArray ()); 可以吗
l470080245 2012-08-13
  • 打赏
  • 举报
回复
有木有人试一下。。原理都知道,用codec转换,可就是转不出来
但文件可以确定是正确的,可以被转出来的
xbt746 2012-08-10
  • 打赏
  • 举报
回复
首先要知道数据库的编码方式

可以使用QTextcodec进行转换
l470080245 2012-08-08
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

编码混合了?这个很难搞啊。你先全部转成QByteArray,然后再尝试用不同的编码解码一下
[/Quote]
[Quote=引用 3 楼 的回复:]

要不先都转换成\u0061的Unicode
然后在转换回来 就OK了!
[/Quote]
不知道为什么,就是转不了正常,哎
全转unicode也试了
SilenceSu 2012-08-08
  • 打赏
  • 举报
回复
要不先都转换成\u0061的Unicode
然后在转换回来 就OK了!
donwmufromdying 2012-08-08
  • 打赏
  • 举报
回复
编码混合了?这个很难搞啊。你先全部转成QByteArray,然后再尝试用不同的编码解码一下
l470080245 2012-08-07
  • 打赏
  • 举报
回复
另外,我用python连接读取的时候是可以全部正常显示,可能是因为python内部处理了编码吧。可我现在需要用Qt处理

16,213

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧