关于中文字符传入js中接收变换成了Unicode编码的转换

问题如标题所示,中文全部变成了Unicode编码.具体哪种不太清楚...

解决办法如下:

JAVA实现方法:

import java.io.UnsupportedEncodingException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class UnicodeTest {
	
	private static Pattern pattern = Pattern.compile("\\&\\#(\\d+)");
	
	
	public static void main(String[] args) throws UnsupportedEncodingException {
		String str ="业务响应V3.0>缴费、充值>充值不成功>接入充值电话不成功>充值不成功";
		
		
		System.out.println(tr(str));
	}
	
	 public static String tr(String str){
	     str = str.replaceAll(">", ">"); //这里的&  和gt显示不出来自动换成了>   
	     StringBuilder sb = new StringBuilder();  
	     String[] childs = str.split(";");
	     for(String child : childs){
	    	 if(child.contains("&#")){
	    		 Matcher m =pattern.matcher(child);
		         while (m.find())  
			          sb.append((char)Integer.valueOf(m.group(1)).intValue());  
	        
	    	 }else
	        	sb.append(child);
	         }

	     return sb.toString();  
	    }  
	
}
最终能得到正确的中文: 业务响应V3.0>缴费、充值>充值不成功>接入充值电话不成功>充值不成功

但是需要说明的是,我这个也并不是万能的.比如说上面的字符串中有HTML的代码>所以需要根据不同的数据进行修改处理.

JS的处理方法:

	function load(){
		var str ="业务响应V3.0>缴费、充值>充值不成功>接入充值电话不成功>充值不成功";

		U2A(str);
	}

	
	function U2A(str) { //Unicode -> ASCII转换
		str = str.replaceAll(">",">");
		var code = str.match(/&#(\d+);/g);

		if (code != null){ 
			for (var i=0; i<code.length; i++){
				str = str.replace(code[i],String.fromCharCode(code[i].replace(/[&#;]/g, '')));				
			}
		}
		alert(str);
	}

	
	String.prototype.replaceAll = function(s1,s2) {
	    return this.replace(new RegExp(s1,"gm"),s2);
	}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值