现在的位置: 首页 > 综合 > 正文

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

2014年09月05日 ⁄ 综合 ⁄ 共 1651字 ⁄ 字号 评论关闭

问题如标题所示,中文全部变成了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);
	}

抱歉!评论已关闭.