在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