VC++使用CSocket发送HTTP Request时需要注意发送数据的编码格式
2024-10-10 06:24:21
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,再调用发送给服务器。
最新文章
- 奇怪的BUG
- JS-window对象集合
- Android 线程模型
- 我的第一个CUDA程序
- 如何学好PHP
- 【转】centos安装vim7.4
- [翻译] 编写高性能 .NET 代码--第二章 GC -- 减少大对象堆的碎片,在某些情况下强制执行完整GC,按需压缩大对象堆,在GC前收到消息通知,使用弱引用缓存对象
- 【备忘】Idea的那些事
- redis-string操作
- hdu3307 欧拉函数
- Java中的内部类————以及jdk1.8的lambda表达式
- OpenCV 图像特效
- Spring Cloud环境搭建: Eureka Server
- HTML <;input>; 标签的 name 属性
- NPOI创建doc
- Spring 小知识点
- js 常见事件
- Codeforces Round #398 (Div. 2) A B C D 模拟 细节 dfs 贪心
- vue-cli创建vue项目
- docker在团队中的实践 How To Install Docker In CentOS