1. 程式人生 > >Qt:TCP資料通訊的中文亂碼問題

Qt:TCP資料通訊的中文亂碼問題

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是無數所謂的,只要傳送接受一直即可。