sqlite3 的中文问题

luoye 2012-12-21 01:27:30
环境:windowsXP VS2005 Qt4.5 sqlite3

使用sqlite的shell创建一个数据库(Test1.db"),建张表(table1),插入几条记录(包括中文字符串),然后使用Qt这样读取:


QSqlDatabase db = QSqlDatabase::addDatabase( "QSQLITE" );
db.setDatabaseName( "Test1.db" );
db.open();

QSqlQuery query;
query.exec( "SELECT * FROM table1" );
while( query.next() )
{
QString qsText = query.value( 0 ).toString();
int nValue = query.value( 1 ).toInt();
qDebug() << qsText << nValue;
}



读出来的中文部分都是乱码,正确的做法应该是怎样?
另外使用Qt向Sqlite中插入数据的正确做法是怎样的?
使用下面的方法:

QTextCodec::setCodecForCStrings( QTextCodec::codecForName("GBK"));

或者这样:

QString::fromLocal8Bit( "中文" );


插入数据后,再通过Qt读取都是正确的,但是在Sqlite的Shell中就是乱码了
求大神帮助啊,谢谢!
...全文
575 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
PandaGreatly 2013-02-23
  • 打赏
  • 举报
回复
同样问题,网上说的方法都试过了,还是无解。
luoye 2013-01-16
  • 打赏
  • 举报
回复
引用 14 楼 jackzhhuang 的回复:
无解,sqlite的shell似乎就不支持中文。 为什么要纠结这些呢?读入读出没问题就可以了。
哦?是这样? 是不是可以结贴了?
jackzhhuang 2013-01-14
  • 打赏
  • 举报
回复
无解,sqlite的shell似乎就不支持中文。 为什么要纠结这些呢?读入读出没问题就可以了。
天王 2013-01-13
  • 打赏
  • 举报
回复
遇到了同样的问题 有人知道怎么解决吗?
saphete 2013-01-07
  • 打赏
  • 举报
回复
引用 3 楼 jdwx1 的回复:
C/C++ code?1QTextCodec::setCodecForCStrings( QTextCodec::codecForName("UTF-8"));
我的是同样的情况,数据文件.db我已经用sqlite administrator建好了,但是在qt里用qDebug读取出来的都是乱码,然后把上面那句代码加进去,后面UTF-8、GBK、GB2312都试过了,全是乱码,这个怎么办。。。
haltwang 2013-01-07
  • 打赏
  • 举报
回复
引用 11 楼 jdwx1 的回复:
引用 10 楼 haltwang 的回复: 引用 8 楼 saphete 的回复:引用 3 楼 jdwx1 的回复: C/C++ code?1QTextCodec::setCodecForCStrings( QTextCodec::codecForName("UTF-8"));我的是同样的情况,数据文件.db我已经用sqlite administrator建好了,但是在qt里用qDebug读取……
这个倒是没试过,但是不管这么改编码,你输出一个中文的string它就输出乱码,所以我就放弃了
jdwx 2013-01-07
  • 打赏
  • 举报
回复
引用 10 楼 haltwang 的回复:
引用 8 楼 saphete 的回复:引用 3 楼 jdwx1 的回复: C/C++ code?1QTextCodec::setCodecForCStrings( QTextCodec::codecForName("UTF-8"));我的是同样的情况,数据文件.db我已经用sqlite administrator建好了,但是在qt里用qDebug读取出来的都是乱码,然后……
不是吧,用qdebug输出日期,qDebug() << QDate::currentDate();就有中文。
haltwang 2013-01-07
  • 打赏
  • 举报
回复
引用 8 楼 saphete 的回复:
引用 3 楼 jdwx1 的回复: C/C++ code?1QTextCodec::setCodecForCStrings( QTextCodec::codecForName("UTF-8"));我的是同样的情况,数据文件.db我已经用sqlite administrator建好了,但是在qt里用qDebug读取出来的都是乱码,然后把上面那句代码加进去,后面UTF-8、GBK、GB2312都试过……
qDebug好像不支持中文似的,用它输出的东西都不能使中文
jdwx 2013-01-07
  • 打赏
  • 举报
回复
引用 8 楼 saphete 的回复:
引用 3 楼 jdwx1 的回复:C/C++ code?1QTextCodec::setCodecForCStrings( QTextCodec::codecForName("UTF-8"));我的是同样的情况,数据文件.db我已经用sqlite administrator建好了,但是在qt里用qDebug读取出来的都是乱码,然后把上面那句代码加进去,后面UTF-8、GB……
建议从建立数据库、建表、添加数据,读出数据,全部在Qt写的程序内完成,设置编码为UTF-8.
luoye 2012-12-22
  • 打赏
  • 举报
回复
各位大神来帮帮忙啊,
luoye 2012-12-21
  • 打赏
  • 举报
回复
没用记事本啊 我是用VS2005编辑源码的,安装了Qt Visual Studio Integration
jdwx 2012-12-21
  • 打赏
  • 举报
回复
你用的是Qt还是VS2005? 不就是用个VS的编译器和记事本吗?
luoye 2012-12-21
  • 打赏
  • 举报
回复
引用 3 楼 jdwx1 的回复:
C/C++ code?1QTextCodec::setCodecForCStrings( QTextCodec::codecForName("UTF-8"));
介个~ 我用的是VS2005啊,编译时会把编码自动转成GBK的,这样肯定不行的!
jdwx 2012-12-21
  • 打赏
  • 举报
回复
QTextCodec::setCodecForCStrings( QTextCodec::codecForName("UTF-8"));
luoye 2012-12-21
  • 打赏
  • 举报
回复
引用 1 楼 jdwx1 的回复:
换UTF-8试试。
能具体点吗?
jdwx 2012-12-21
  • 打赏
  • 举报
回复
换UTF-8试试。

16,199

社区成员

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

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