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

c++ 使用 gsoap 调用 java WebService 中文乱码
问题产生:
        使用 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/

你可能感兴趣的:(c++ 使用 gsoap 调用 java WebService 中文乱码)