• java,js 解unicode


     1 import java.util.regex.Matcher;
     2 import java.util.regex.Pattern;
     3 
     4 public class UnicodeDecodeDataConverter
     5 {
     6     private String decodeUnicode( final String dataStr ) {
     7         int start = 0;
     8         int end = 0;
     9         final StringBuffer buffer = new StringBuffer();
    10         while( start > -1 ) {
    11         end = dataStr.indexOf( "\\u", start + 2 );
    12         String charStr = "";
    13         if( end == -1 ) {
    14         charStr = dataStr.substring( start + 2, dataStr.length() );
    15         } else {
    16         charStr = dataStr.substring( start + 2, end);
    17         }
    18         char letter = (char) Integer.parseInt( charStr, 16 ); // 16进制parse整形字符串。
    19         buffer.append( new Character( letter ).toString() );
    20         start = end;
    21         }
    22         return buffer.toString();
    23         }
    24     
    25   public String execute(String inputString)
    26   {
    27         Pattern    pattern = Pattern.compile("\\\w{5}");
    28         Matcher matcher = pattern.matcher(inputString);
    29         int start=0;
    30         while (matcher.find(start)){
    31             String code = matcher.group();
    32         //    System.out.print(code + " " + slog.decodeUnicode(code));
    33             inputString = inputString.replace(code, decodeUnicode(code));
    34             start = matcher.end();            
    35         }
    36        return inputString;
    37   }
    38 }

     下面还有个方法也可以实现

    /**
    	 * 将包含unicode码的字符串转成汉字
    	 * @param str
    	 * @return
    	 */
    	public static String ascii2Native(String str) {
    		StringBuilder sb = new StringBuilder();
    		int begin = 0;
    		int index = str.indexOf("\u");
    		while (index != -1) {
    			sb.append(str.substring(begin, index));
    			sb.append(ascii2Char(str.substring(index, index + 6)));
    			begin = index + 6;
    			index = str.indexOf("\u", begin);
    		}
    		sb.append(str.substring(begin));
    		return sb.toString();
    	}
    
    	/**
    	 * 将单个unicode转成汉字
    	 * @param str
    	 * @return
    	 */
    	private static char ascii2Char(String str) {
    		if (str.length() != 6) {
    			throw new IllegalArgumentException(
    					"Ascii string of a native character must be 6 character.");
    		}
    		if (!"\u".equals(str.substring(0, 2))) {
    			throw new IllegalArgumentException(
    					"Ascii string of a native character must start with "\u".");
    		}
    		String tmp = str.substring(2, 4);
    		int code = Integer.parseInt(tmp, 16) << 8;
    		tmp = str.substring(4, 6);
    		code += Integer.parseInt(tmp, 16);
    		return (char) code;
    	}
    	
    


    js Unicode编码转换

    var decToHex = function(str) {
        var res=[];
        for(var i=0;i < str.length;i++)
            res[i]=("00"+str.charCodeAt(i).toString(16)).slice(-4);
        return "\u"+res.join("\u");
    }
    var hexToDec = function(str) {
        str=str.replace(/\/g,"%");
        return unescape(str);
    }
    var str=decToHex("decToHex unicode 编码转换");
    alert("编码后:"+str+"
    
    解码后:"+hexToDec(str));
    

      

     

  • 相关阅读:
    SQL学习(六)select into:复制表信息
    SQL学习(五)多表关联-join
    SQL学习(四)Where语句中的各种匹配方式
    SQL学习(三)Select语句:返回前多少行数据
    SQL学习(二)SQL基础的增删改查
    SQL学习(一)相关基础知识
    Python学习笔记:Unittest框架了解
    Python学习笔记:读取Excel的xlrd模块
    Python语言上机题实现方法(持续更新...)
    beego的安装以及bee的安装和使用
  • 原文地址:https://www.cnblogs.com/junrong624/p/3889710.html
Copyright © 2020-2023  润新知