在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
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表示字符集设置不正确。 |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论