我的错误:
1.在创建数据库的时候使用了char类型存储中文字符,后来发现是不对的应该要用nvarchar区别请看:
http://wenku.baIDu.com/link?url=CGKWkWQeVKanH5mAoKSg5WVCltPvwOdPATOkz-V9WUilb1OQrRpobEomlD96YqlQ3Ghq1T1D9zFawWHR4HaMfYycqkpG03cX70neuIMO367
freetds配置:
[DSN_ON_FREETDS]
host = 10.15.32.97
port = 1433
tds version = 8.0
clIEnt charset = UTF-8
odbc.ini配置:
[DSN_ON_ODBC]
Driver=FREETDS
Description=THE_DSN_OF_ODBC
Servername=DSN_ON_FREETDS
Database=tick
odbccinst.ini配置:
[FREETDS]
Description=freetds driver
Driver=/usr/local/freetds/lib/libtdsodbc.so
fileUsage=2
UsageCount=2
Trace=Yes
Tracefile=/tmp/odbc.log
Qt程序注意要点:
1.要在main设定编码
QTextCodec *codec = QTextCodec::codecForname("UTF-8");
QTextCodec::setCodecForTr(codec);
2.关于插入数据
QString cmd = QString("INSERT INTO student (Student_no,Student_name,Student_sex,Student_age,Student_class,Student_major)VALUES ('%1','%2','%3',%4,'%5','%6')").arg(no).arg(name).arg(sex).arg(age).arg(clas).arg(depar);//插入学生
qDeBUG()<<cmd;
query.exec(cmd.toUtf8());//这里如果直接query.exec(cmd);会出现错误
QsqlError(2402,"QODBC3: Unable to execute statement","[FreeTDS][sql Server]Error converting characters into server's character set. Some character(s) Could not be converted")
3.关于查询数据
query.exec("select * from student");
while(query.next())
{
qDeBUG()<<query.value(0).toString()<<query.value(1).toString()
<<query.value(2).toString()<<query.value(3).toString()
<<query.value(4).toString()<<query.value(5).toString();
}
参考于以下网站:
http://www.freetds.org/userguIDe/localization.htm
http://www.amobbs.com/thread-5512726-1-1.HTML
http://comments.gmane.org/gmane.comp.db.tds.freetds/13741
总结以上是内存溢出为你收集整理的QT freetds unixODBC 连接sqlserver2008 解决中文乱码问题全部内容,希望文章能够帮你解决QT freetds unixODBC 连接sqlserver2008 解决中文乱码问题所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)