Qt网络编程接收数据为乱码的解决方案

这里是所说的乱码是指,Qt程序将一段中文发送到网络之后,接收端显示出来的是乱码,而不是指Qt程序运行的时候,界面上的中文全是乱码。如果你的Qt程序的界上出现了乱码,请参考解决Qt中文乱码的编码设置

注意,YUCOAT只测试过Linux平台,没测试过Windows平台。
因为课程设计,第一题就是就是编写一个聊天程序。我选择了Qt。程序写好之后运行正常,不足之处在于,发送中文的时候,接收端显示的全是问号。经过查阅资料和自行探索之后,我找到了解决的办法。

发送端的操作
获取输入框的内容并将它转换成Local8Bit之后再发送

QString s = inputTextEdit->toPlainText();
Socket->write(s.toLocal8Bit());

接收端的处理

QByteArray s;
s = Socket->readAll();
msg = s.toString()

这样调用chatLogTextEdit->append(msg)就能将接收到的内容以正确的编码显示在chatLogTextEdit上了!

再次强调,在本人测试的环境里客户端和服务端都是Linux平台。其他平台未进行测试!



  1. 我是这么写的:

    <br/>// 该代码在QUdpSocket的派生类成员函数中<br/>QByteArray byteArray = txtSend.toAscii();  // txtSend是QString类型<br/>writeDatagram( byteArray.data(), byteArray.size(), QHostAddress::Broadcast, MULTICAST_PORT_NUM );   // 这是QUdpSocket的成员函数,<br/>

    测试过跨平台没什么问题,在Linux和Windows之间互相通信中英文都没有乱码。

Post Navigation

无觅相关文章插件,快速提升流量