zoukankan      html  css  js  c++  java
  • c++ 使用 gsoap 调用 WebService 中文乱码

    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表示字符集设置不正确。

  • 相关阅读:
    Java 泛型 泛型的约束与局限性
    Java 泛型 泛型方法
    Java 泛型 泛型数组
    Java 泛型 协变性、逆变性
    Java 泛型 协变式覆盖和泛型重载
    Java 泛型 泛型代码和虚拟机
    Insertion Sort List
    Remove Duplicates from Sorted List II
    String to Integer (atoi)
    SpringMvc源码入门
  • 原文地址:https://www.cnblogs.com/seer/p/3338146.html
Copyright © 2011-2022 走看看