使用的是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);