寺委书记

Good good study, day day up!

导航

gSoap中文乱码解决

Posted on 2011-12-08 09:27  MonkChen  阅读(3809)  评论(1)    收藏  举报

终于也遇到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;
}

 

至此,便可成功上传中文!