在socket中发送中文的方法

本文介绍了在QT中使用QUdpSocket进行UDP数据传输时如何正确处理中文字符的问题。发送端将QString转换为UTF-8编码的QByteArray,接收端再将其还原为QString,确保中文字符的正确显示。

 

QT中封装的socket类有QUdpSocket 和QTcpSocket,但是发送和接受的函数

qint64 writeDatagram ( const char * data, qint64 size, const QHostAddress & address, quint16 port )
qint64 writeDatagram ( const QByteArray & datagram, const QHostAddress & host, quint16 port )

 

qint64 readDatagram ( char * data, qint64 maxSize, QHostAddress * address = 0, quint16 * port = 0 )

都是char类型的,而从文本中获取的数据是QString,如果是英文,一个字符占一个字节,直接用QByteArray  中的append方法即可

但是如果是中文,仅仅append,是不行的,QString.append(QByteArray)显示的话中文是乱码

 

需要在发送和接受的过程进行处理

发送时候,要发送的文本时QString str;

QHostAddress serv_add("172.16.85.160");

QByteArray  byt;

byt.append(str.toUtf8())

writeDatagram (byt.constData(),serv_add,SERVER_PORT);

 

接收端

QByteArray byt_recv;

readDatagram(byt_recv.data(),len,0,0);

QStrign  str;

str=QString::fromUtf8(byt_recv);

此时str中保存的就是中文

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值