按钮技术交流群: 460189483UDP通信时,使用QByteArray接收到的数据,其中包括接收到的中文数据,在QString显示时,会出现乱码问题,所以找了几种方法,通过的漏洞都写出来了
//QString迁移到QByteArray方法。 这个没关系
//Qt5。 12qstringstr(Hello ); QByteArray bytes=str.toUtf8 (; //QString是QByteArray方法1qstringstr('Hello ); QByteArray bytes=str.toLatin1 (; //QString转换为q字节的方法2//q字节转换为QString的方法
方法1 :如果只进行字符串转换没有问题的话,有中文的话就会发生乱码
qbytearraybytes(Helloworld ); QString string=bytes; //QByteArray是QString方法1qbytearraybytes(Helloworld ); qstring字符串; string.prepend(bytes; //q从字节迁移到QString的方法2 qDebug () string; 方法解决了QQ出现乱码的问题,但没有解决QQ出现乱码的问题
qbytearraynamearray=array.mid (pro _ data _ pos,10 )从array数组的pos开始取10字节的qstring name=qstring 3360: from local///包含中文时会发生乱码的qstring name=qstring 33603360 from local 8bit (“机器人”); //这样显示中文没有问题,但是不能用变量替换机器人QLabel *label=new QLabel (); 标签设置(name; 解决方案:采用采样QTextCodec解码GBK编码方法解决
# includeqtextcodecqbytearraynamearray=array.mid (pro _ data _ pos,10 )从array数组的pos中获取10字节的qtextcodec*codec=() //nameArray无论是char*还是qbytearrayqlabel * label=new qlabel (; 标签设置(name; //这样中文显示就没问题了