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

  • 相关阅读:
    60个Redis面试题
    Linux服务器安全加固
    Linux安全加固手册
    mysql赋权限
    cut命令的使用实例
    超详细的Tomcat性能监控及调优教程
    Linux面试题(系统管理类——Raid)
    https://www.cnblogs.com/diantong/p/10745372.html
    CentOS6启动流程(含详细流程图)
    Oracle ROWNUM用法和分页查询总结
  • 原文地址:https://www.cnblogs.com/seer/p/3338146.html
Copyright © 2011-2022 走看看