这里是所说的乱码是指,Qt程序将一段中文发送到网络之后,接收端显示出来的是乱码,而不是指Qt程序运行的时候,界面上的中文全是乱码。如果你的Qt程序的界上出现了乱码,请参考解决Qt中文乱码的编码设置。
注意,YUCOAT只测试过Linux平台,没测试过Windows平台。
因为课程设计,第一题就是就是编写一个聊天程序。我选择了Qt。程序写好之后运行正常,不足之处在于,发送中文的时候,接收端显示的全是问号。经过查阅资料和自行探索之后,我找到了解决的办法。
发送端的操作
获取输入框的内容并将它转换成Local8Bit之后再发送
QString s = inputTextEdit->toPlainText();
Socket->write(s.toLocal8Bit());
Socket->write(s.toLocal8Bit());
接收端的处理
QByteArray s;
s = Socket->readAll();
msg = s.toString()
s = Socket->readAll();
msg = s.toString()
这样调用chatLogTextEdit->append(msg)就能将接收到的内容以正确的编码显示在chatLogTextEdit上了!
再次强调,在本人测试的环境里客户端和服务端都是Linux平台。其他平台未进行测试!


我是这么写的:
测试过跨平台没什么问题,在Linux和Windows之间互相通信中英文都没有乱码。
还有,我是统一使用UTF-8字符编码的。