您的位置:首页 > 移动开发 > Android开发

QT 与 android java socket通讯 中文字符编码问题 解决

2012-08-30 10:23 465 查看
QT作为 socket server,接受java端发送来的数据。(通过UTF8编码进行数据传输)

qint64len=
sock->bytesAvailable();

qDebug()<<"socket data len:"<< len;


QByteArray alldata = sock->read(len)


QTextCodec *utf8codec = QTextCodec::codecForName("UTF-8");

QString utf8str = utf8codec->toUnicode(alldata.mid(2));

qDebug()<<"hex:["<<alldata.toHex().toUpper()<<"]";

qDebug()<<"utf-8 ["<< (utf8str) << "]";


android java client端:(我们当前采用utf8编码发送数据,android sdk中的writeUTF是对发送的数据执行UTF8编码,看图片:Writes the specified string encoded in UTF-8)

clientSocket = new Socket("192.168.1.106", 1234);

dout = new DataOutputStream(clientSocket.getOutputStream());

String sendText = editText.getText().toString();
//从文本输入框获取内容

dout.writeUTF(sendText);



QT 服务器端接受数据问题来了:

通过对发送过来的数据打印16进制发现,前面多两个0,所以对网络数据编码时从第三字节开始执行UTF8编码 mid(2)。

如果直接对接受的readAll()数据执行utf8编码,数据肯定不正确。

程序输出:

android java客户端:



QT server端



转载请注明连接地址!/article/9209997.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: