socke发送接收数据时,字符串格式转化?
我想通过QTcpSocket发送数据:
客户端:
QString message = "你好,服务器!";
tcpSocket->write(message.toLatin1(), message.length());
服务端:
while(tcpSocket->bytesAvailable()>0)
{
int len = tcpSocket->bytesAvailable();
QByteArray char = tcpSocket->read(len);
}
因为我传送的数据为中文,在接收的时候,就会变成乱码的形式,这个问题该如何解决呢?
小弟想法:在客户端传递的时候,就以QByteArray的形式传递,即:tcpSocket->write(message.toAscii(), message.length());这样的话,可以解决中文的形式,但是会出现另外一个问题,就是:接收的字符变短了两个字节
eg:我发送message = "abc哈哈ef";接收的时候就变成了"abc哈哈e"。。。
请问大家有么有好的方法处理呢。。。
[解决办法]
你数据还没有收完,它当然不全了。不要假设你能在一次readyRead中接收到所有数据,应该使用协议来确保数据的完整性。
http://topic.csdn.net/u/20120515/18/3d48b612-fa6b-4604-a3cd-e1a161b2a598.html
这个帖子可能对你有帮助。