C++和C#之间Socket通信中文乱码

在C++ MFC与Unity3D的UDP通信中遇到中文乱码问题,由于C++客户端设置为多字节字符集,导致发送的中文数据在Unity3D服务端接收时出现不全或乱码。解决方法是C++端发送前将多字节编码转换为Unicode编码,C#端使用Unicode编码接收。通过调整编码方式,确保了数据正确传输。
摘要由CSDN通过智能技术生成

环境:C++ MFC框架,Visual Studio 2010 SP1,C#是Unity3D 5.3.1f1开发,都是Windows10 环境。
参考链接:http://blog.csdn.net/yunffern/article/details/7850526
http://www.cppblog.com/sunraiing9/archive/2007/03/21/20281.html
问题:用的是UDP,C++端是客户端,Unity是服务端,客户端的设置是多字节(Use Multi-Byte Character Set),这就导致客户端在发送的UDP消息如果带有中文的话,服务端接收到的消息就会不全或有乱码。

解决办法:在C++发送前把多字节编码转成Unicode编码,C#在接收时,用Unicode编码。
部分代码如下,C++
这里sendto的第三个参数,是需要两倍的size,因为多字节用8bit来表示字符,Unicode用16bit来表示字符。

        char buffer[1024]="\0"
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值