beyard

常用链接

统计

最新评论

【总结】C++ 的HTTP读取编码转化问题

问题描述:

1. 服务器发的数据带有中文  UTF-8 编码发了过来要接受。
2. C++ 工程是 Multi-Byte 的,不是UNICODE
3. CHttpFile.Read 读取的数据中看到有乱码  !!!
   因为当前的 工程都是 多字节字符集的, 认不出 UTF-8, 所以呢,要把读到的数据 转成  UTF-8 的格式
   就要用到  MultiByteToWideChar(CP_UTF8),之后就好了!表示要转成 UTF-8 宽字符

char *pStr = str.GetBuffer(str.GetLength()); //取得str对象(包含中文)的原始字符串
int nBufferSize = MultiByteToWideChar(CP_UTF8, 0, pStr, -1, NULL, 0); //取得所需缓存的多少
wchar_t *pBuffer = (wchar_t*)malloc(nBufferSize * sizeof(wchar_t));//申请缓存空间
MultiByteToWideChar(CP_UTF8, 0, pStr, -1 , pBuffer, nBufferSize*sizeof(wchar_t));//转码

为什么要转换???因为我们要看到 UTF-8

   -------------------------------

反向问题

1. 我要发中文给服务器然后写到数据库,当前工程 Multi-byte,结果写进去编程乱码
2. 在写之前需要转换成 UTF-8才能发送到服务器然后写进数据库
解决方法也是调用 上面的函数,再发送,不过这时候发送的时候我们看到的就是乱码。

为什么要转换???? 因为服务器需要 UTF-8

注意: 对服务器POST数据的时候,可以先编码成  %BE%4D..等再post,也可以依照上述方法编码成看不懂的buffer 再post



posted on 2014-12-22 17:32 阅读(518) 评论(0)  编辑 收藏 引用


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理