• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

c++使用gsoap调用WebService中文乱码

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
c++ 使用 gsoap 调用  WebService 中文乱码
 
问题产生:

       使用gsoap时,如果WebService服务端及客户调用端都使用 C++ , 再传递中文时不会存在乱码问题,

       当客户端为 C++ ,WebService服务端使用Java、domino,传递中文则会有乱码问题。

产生原因:

       宽字符的原因

 

解决办法(一):

    在程序中首先设置本地代码页

    vista 操作系统: 

          setlocal(LC_ALL,"Chinese");

          soap_set_mode(soap,SOAP_C_MBSTRING);

    windowsxp 操作系统:

          setlocal(LC_ALL,"chs");

          soap_set_mode(soap,SOAP_C_MBSTRING);

 

解决方法(二)

    1. 使用 wsdl2h.exe 通过wsdl描述文件创建C++头文件(test.h);

    2. 将头文件(test.h)中 std:string* 使用wchar_t* 替换;

    3. 使用 soapcpp2.exe -i test.h ,生成相关的cpp及h文件

    4. 使用 C++ 时,需要将接收的wchar_t类型数据转换为char, 使用WideCharToMultiByte函数   

后续:

    soap在对字符编码转换时,调用 wctomb 函数,该函数的调用在 stdcoap2.cpp 文件中,代码调试跟踪至此,查看 该函数的返回值是否正确,-1表示字符集设置不正确。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap