终于也遇到gSoap的中文乱码问题了,废话不多说---环境如下:
gSoap2.8.5 + java web service(jax-ws),中文乱码,查了一些资料,虽然证实有的条件是必备的,但是没有一篇文章照做下来能够奏效,依然乱码,经过分析摸索,成功解决,步骤如下:
1.代理类构造函数加入编码参数,如PatProPortBindingProxy proxy = PatProPortBindingProxy(server,SOAP_C_UTFSTRING); //以前版本还有分输入输出,现在全部统一成一个,此为utf-8编码
2.传递中文参数时,先将widechar转为char
ns1__addDevUser req3;
req3.arg0 = "test22";
req3.arg1 = WideCharToMulityByte(TEXT("中文可以么,中文果然可以,哈哈"));
req3.arg2 = 1;
req3.arg3 =1;
req3.arg4 = 1;
辅助函数:
wchar_t* MulityByteToWideChar(char *str)
{
DWORD dwNum = MultiByteToWideChar(CP_UTF8, 0, str, -1, NULL, 0);
wchar_t *pwText = new wchar_t[dwNum];
MultiByteToWideChar(CP_UTF8, 0, str, -1, pwText, dwNum);
return pwText;
}
char* WideCharToMulityByte(wchar_t *str)
{
int len = WideCharToMultiByte(CP_UTF8, 0, str, -1, 0, 0, 0, 0);
char* output = new char[len + 2];
WideCharToMultiByte(CP_UTF8, 0, str, -1, output, len + 1, 0, 0);
return output;
}
至此,便可成功上传中文!
浙公网安备 33010602011771号