面对现实,超越自己
逆水行舟,不进则退
posts - 269,comments - 32,trackbacks - 0
问题产生:
       使用gsoap时,如果WebService服务端及客户调用端都使用 C++ 再传递中文时不会存在乱码问题,

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

产生原因:

       宽字符的原因

解决办法()

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

    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 ,生成相关的cpph文件

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

后续:

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

本文转自:http://wenhaidongke.blog.163.com/blog/static/128070090200982313655668/

posted on 2013-08-29 19:57 王海光 阅读(2750) 评论(0)  编辑 收藏 引用 所属分类: C++

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