QtCreator中文乱码的解决方案

QtCreator中文乱码的解决方案

原则:QT内部统一采用Unicode编码(UTF-16)的形式进行数据存储,所以保存至QString的数据要保证按照相应的编码保存至Unicode内存中;qDebug()的时候也会统一按照Unicode的方式进行数据的输出。

1、建立Qt工程时,首先确保编辑器的编码在GBK18030的编码下;
2、用QString 保存数据,并以本地编码的方式来进行解析成Unicode,来进行测试是否读取成功:

QString tmpStr= QString::fromLocal8Bit("贤哥");
qDebug()<<tmpStr;
qDebug()<<"str = "<<str<<"    array="<<array.size()<<"   array="<<array.toHex();
//输出:str =  "贤"     array= 3    array= "e8b4a4"

3、可以通过QString->qbyearray 的方式转换成所需要的编码

QByteArray array = str.toUtf8();
qDebug()<<array;     //可以查看utf-8的16进制编码

4、可以将数据转换成 char*

const char *arr = array.constData();

5、可以将char* 或者 qbyteArray转换成QString 来进行验证(从UTF-8转换成Unicode)

    QString str2 = QString::fromUtf8(array);
    qDebug()<<"str2 = "<<str2;

    QString str3 = QString::fromUtf8(arr);
    qDebug()<<"str3 = "<<str3;
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值