您的位置:首页 > 理论基础 > 计算机网络

VC++使用CSocket发送HTTP Request时需要注意发送数据的编码格式

2013-10-29 21:04 501 查看
VS2010以及更高版本中新建的MFC项目字符集默认是Unicode,CString创建的字符串默认是Unicode。

使用CSocket时,若以CString组织需要发送的HTTP Head时,那么服务器不会接受这种数据,会强制断开连接。

HTTP服务器的默认读取方式是基于char type的单字节字符串编码(ANSI-1Byte(8bit)/char(英文字符)),而Unicode是以2Byte(16bit)/char存储的,所以不能以unicode编码来构造HTTP Head.

解决方法有两种,第一种:

以CStringA class构造HTTP Head;

根据MSDN上的解释:“A CStringA object contains string data that is based on the char type, and supports single-byte and multibyte ( MBCS) strings. ”

所以直接用CStringA构造HTTP Head是可以的。

第二种:

利用WideCharToMultiByte function(http://msdn.microsoft.com/en-us/library/windows/desktop/dd374130(v=vs.85).aspx

先将Unicode编码的字符串转化成单字节的ASCII,再调用发送给服务器。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐