当前位置: 代码迷 >> QT开发 >> sqlite3 的中文有关问题
  详细解决方案

sqlite3 的中文有关问题

热度:42   发布时间:2016-04-25 04:02:39.0
sqlite3 的中文问题
本帖最后由 xuqiangvc 于 2012-12-21 13:28:37 编辑
环境: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中就是乱码了
求大神帮助啊,谢谢!

------解决方案--------------------
换UTF-8试试。
------解决方案--------------------
QTextCodec::setCodecForCStrings( QTextCodec::codecForName("UTF-8"));


------解决方案--------------------
你用的是Qt还是VS2005?
不就是用个VS的编译器和记事本吗?
------解决方案--------------------
引用:
C/C++ code?1QTextCodec::setCodecForCStrings( QTextCodec::codecForName("UTF-8"));
我的是同样的情况,数据文件.db我已经用sqlite administrator建好了,但是在qt里用qDebug读取出来的都是乱码,然后把上面那句代码加进去,后面UTF-8、GBK、GB2312都试过了,全是乱码,这个怎么办。。。
------解决方案--------------------
引用:
引用:C/C++ code?1QTextCodec::setCodecForCStrings( QTextCodec::codecForName("UTF-8"));我的是同样的情况,数据文件.db我已经用sqlite administrator建好了,但是在qt里用qDebug读取出来的都是乱码,然后把上面那句代码加进去,后面UTF-8、GB……

建议从建立数据库、建表、添加数据,读出数据,全部在Qt写的程序内完成,设置编码为UTF-8.
------解决方案--------------------
引用:
引用:
C/C++ code?1QTextCodec::setCodecForCStrings( QTextCodec::codecForName("UTF-8"));我的是同样的情况,数据文件.db我已经用sqlite administrator建好了,但是在qt里用qDebug读取出来的都是乱码,然后把上面那句代码加进去,后面UTF-8、GBK、GB2312都试过……



qDebug好像不支持中文似的,用它输出的东西都不能使中文
------解决方案--------------------
引用:
引用:引用:
C/C++ code?1QTextCodec::setCodecForCStrings( QTextCodec::codecForName("UTF-8"));我的是同样的情况,数据文件.db我已经用sqlite administrator建好了,但是在qt里用qDebug读取出来的都是乱码,然后……

不是吧,用qdebug输出日期,qDebug() << QDate::currentDate();就有中文。
------解决方案--------------------
引用:
引用:
引用:引用:
C/C++ code?1QTextCodec::setCodecForCStrings( QTextCodec::codecForName("UTF-8"));我的是同样的情况,数据文件.db我已经用sqlite administrator建好了,但是在qt里用qDebug读取……


这个倒是没试过,但是不管这么改编码,你输出一个中文的string它就输出乱码,所以我就放弃了
------解决方案--------------------
遇到了同样的问题 有人知道怎么解决吗?
------解决方案--------------------