关于Qt中遇到qDebug输出QString时输出Unicode码问题的解决与总结

本文主要介绍了在使用Qt5.5时,遇到qDebug输出QString中文显示Unicode码的问题及其解决方法。通过QString的toStdString().c_str()进行转换,或者尝试设置GBK编码,使用toLocal8Bit()解决含有中文的QString转char*时的乱码问题。在转换过程中,需要注意某些情况下可能存在的错误和局限性。
摘要由CSDN通过智能技术生成

本人使用的是Qt5.5,使用qDebug输出信息是遇到中文输出为Unicode码,

到处查资料无果。有人说是Qt5.5的bug,Qt搞得不精。

使用qDebug过程中发现

QString a("你好");

qDebug()<<"中文"<<a;

在上述代码中,“中文”能够正常输出,但是a中的“你好”以unicode的格式输出。

所以,解决方案来了,将QString装换为“中文”的格式,而“中文”是以char* 类型存储,因此执行下列操作:

char* b=a.toStdString().c_str();

这样就实现了转换,问题就解决。


在查阅资料过程中的总结:

1.类似于“你好”,实际是以char* 格式存储

2.QString采用的是unicode

3.QString::toStdString()将Qt中的QString类型装换为C++中的中的std::string类型,std::basic_string::c_str()将std::string类型转换为char*


另外,以类型转换的思路来看,网络上还提供了一种QString到char*类型转换的思路:

Qstring  str;

char*  ch;

QByteArray ba = str.toLatin1();    

ch=ba.data();

注意第三行,一定要加上,不可以str.toLatin1

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值