MFC Socket编程时遇到的多字符、Unicode字符集问题

在MFC Socket编程中,遇到客户端多字节字符集与服务器Unicode字符集不匹配导致的乱码问题。通过将客户端切换到Unicode环境解决。本文介绍了Unicode字符集的种类,以及在MFC中多字节与Unicode字符之间的转换方法,包括CA2W和CW2A的使用。
摘要由CSDN通过智能技术生成

     Socket编程时,有客户端和服务器,服务器是别人写好的,客户端是自己在写,但是写好了能够连接上服务器,传输数据就一直有问题,传输到服务器的数据全部是乱码。最终将问题定位为客服端是用的多字节字符集,而服务器端是unicode字符集。二者之间很多数据的转换有问题。最终将客户端也在unicode字符环境下开发,就可以正常的传输和接收数据。关于字符集的相关介绍,参见:http://futman.blog.163.com/blog/static/62394620075199485362/。unicode字符集的出现解决了各国字符语言符号用多少个字节表示的问题,unicode有 UTF-8,UTF-16,UTF-32,windows下面统一使用UTF-16,就是所有的字符,不论哪国的都用两个字节16位来表示。

      用多字节方式构造的函数在unicode下面使用时会有较多的问题,但是将函数的这些参数进行适当的转换,就可以将它们用到unicode下面来。下面的内容是引用一个网友的说法:

VC6的默认设置:多字节。
vs的默认设置:Unicode,在属性中可以改成多字节。
多字节编码:char,string,CStringA。
Unicode编码:wchar_t,wstring,CStringW。
注意:如果项目是Unicode,那么CString就被定义为CStringW,否则就是CStringA。
typedef ATL::CStringT< wchar_t, StrTraitMFC_DLL< wchar_t > > CStringW;//unicode
typedef ATL::CStringT<

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值