在qt提取lineedit中的中文字符串,通过tcp通信时,服务器接收乱码的情况,解决办法


使用的是qt5.9版本,在取lineedit中的中文字符转成字符串,后转成char*的过程中,在仅仅使用string str.tolocal8bit,是不起作用的,转换不了格式,输出的char*数组还是utf8格式的报文,解决方式如下:

 

添加

QTextCodec::setCodecForLocale(QTextCodec::codecForName("GBK"));
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("GBK"));
QTextCodec::setCodecForTr(QTextCodec::codecForName("GBK"));

 编译报错后,删除后面报错的两条指令即可。

 

比如Qstring str="汉字“;

utf8输出E6 B1 89 E5 AD 97

local8bit输出BA BA D7 D6

 

===========================================接收过来中文数据,解析显示==================

    QTextCodec *codec = QTextCodec::codecForName("GBK");//指定QString的编码方式

 QString name = codec->toUnicode(cmp_info.User_addr);//nameArray可以是char*,可以是QByteArray
     ui->lineEdit_5->setText(name);





免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM