当前位置: 代码网 > it编程>数据库>MsSqlserver > QT5.8带中文QString转换为gbk,ASCII编码的char数组

QT5.8带中文QString转换为gbk,ASCII编码的char数组

2024年07月28日 MsSqlserver 我要评论
开发的一个项目中,用到从SQLITE3数据库取出的数据,以gdk或ASCII格式发送给下游设备。

开发的一个项目中,用到从sqlite3数据库取出的数据,以gdk或ascii格式发送给下游设备。

需要将带有中文的qstring类型转换为char数组。

    char     chaddress[16];
    qstring dd=qlatin1string("1.1 地址位置定义");
    memcpy(chaddress,dd.tolatin1().data(),16);

可实现最终输出的chaddress为ascii编码

但问题在于数据库取出的数据格式为qvariant,qvariant可转换为qstring,但不可以之间转换为char*类型。而且qlatin1string中参数不能为qstring,可传递char*类型。

在多次尝试后,最后的方法为:

qtextcodec *utf8 = qtextcodec::codecforname("utf-8");
qtextcodec* gbk = qtextcodec::codecforname("gbk");

//_querysql为qsqlquery*  _querysql;

qstring str1=_querysql->value(fieldno++).tostring();//将数据库查出的数据转换为qstring类型
qstring strunicode= utf8->tounicode(str1.tolocal8bit().data());//将str1从utf8 -> unicode
qbytearray gb_bytes= gbk->fromunicode(strunicode);//unicode -> gbk, 得到qbytearray

char    inaddress[16];
 memcpy(inaddress,gb_bytes,16);//得到char数组格式gdk编码的数据

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com