Qt:TCP資料通訊的中文亂碼問題
阿新 • • 發佈:2019-02-05
1、問題描述:寫了一個簡單的TCP聊天軟體,在QTextEdit上顯示文字,但是出現了通訊中文亂碼的問題。
2、問題原因:並非是資料通訊問題,而是資料型別沒有及時轉換。
解決方法:QTcpSocket讀出的資料型別是QByteArray型別,而QTextEdit.appand()和QTextEdit.toPlainText()中的引數是QString型別,因此發資料時要由QString轉化到QByteArray,然後讀資料時要由QByteArray轉化到QSTring
3、具體程式碼片段:
(1)傳送資料:
void ClientWidget::On_Send() { QString str=ui.textEditSend->toPlainText();//從文字框中取出資料 tcpsocket->write(str.toLocal8Bit());//向套接字寫入資料 }
(2)接受並顯示資料:
void ServerWidget::On_readyRead()
{
QByteArray array=tcpsocket->readAll();//從通訊套接字中取出內容
ui.textEditRead->append(QString::fromLocal8Bit(array));//在文字框中追加
}
PS:至於選用的編碼型別如Local8Bit還是UTF8是無數所謂的,只要傳送接受一直即可。