gsoap c与java web之间传输字符串中文乱码问题

中文乱码,也就是编码问题不一致,我们也不深究用什么soap_set_mode用SOAP_C_MBSTRING还是SOAP_C_UTFSTRING 只需要我们对字符进行转码成一个统一规范就可以正常显示了,比如c端把字符串转码成十六进制字符

代码如下:

char* asc2hex(char *in)
{
	char *ret;
	int i,len;
	if(in==NULL)return NULL;
	len=strlen(in);
	ret=(char*)malloc(len*2+1);
	
	for(i=0;i<len;i++)
		sprintf(ret+i+i,"%02X",*((unsigned char*)in+i));
	return ret;
}


而java客户端就可以写一个解码函数如:

// 转化十六进制编码为字符串 
public static String toStringHex(String hexStr) 
{ 
byte[] baKeyword = new byte[hexStr.length()/2]; 
for(int i = 0; i < baKeyword.length; i++) 
{ 

baKeyword[i] = (byte)(0xff & Integer.parseInt(hrexSt.substring(i*2, i*2+2),16)); 
} 
try 
{ 
String str = new String(baKeyword, "gb2312");//linux操作系统设置字符集 
} 
catch (Exception e1) 
{ 
e1.printStackTrace(); 
} 
return str; 
} 


 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值