Java将汉字转换/uxxx方式详解编程语言

import java.util.regex.Matcher; 
import java.util.regex.Pattern; 
/** 
 * String and Unicode convert each other. 
 * @author    yzh.lin 
 * @since    2012-08-09 
 *  
 */ 
public class UnicodeConverter { 
 
    private static final Pattern REG_UNICODE = Pattern.compile("[0-9A-Fa-f]{4}");   
    private static final Pattern EN_CODE = Pattern.compile("[A-Za-z]{4}");   
 
    public static String unicode2String(String str) {   
        StringBuilder sb = new StringBuilder();   
        int len = str.length();   
        for (int i = 0; i < len; i++) {   
            char c1 = str.charAt(i);   
            if (c1 == '//' && i < len - 1) {   
                char c2 = str.charAt(++i);   
                if (c2 == 'u' && i <= len - 5) {   
                    String tmp = str.substring(i + 1, i + 5);   
                    Matcher matcher = REG_UNICODE.matcher(tmp);   
                    if (matcher.find()) {   
                        sb.append((char) Integer.parseInt(tmp, 16));   
                        i = i + 4;   
                    } else {   
                        sb.append(c1).append(c2);   
                    }   
                } else {   
                    sb.append(c1).append(c2);   
                }   
            } else {   
                sb.append(c1);   
            }   
        }   
        return sb.toString();   
    }  
 
    /** 
     * Convert the whole String object. 
     * @param str 
     * @return 
     */ 
    public static String string2Unicode(String str) 
    { 
        StringBuilder sb=new StringBuilder(); 
        for(int i=0;i<str.length();i++) 
        { 
            String tmpStr = Integer.toHexString(str.charAt(i)); 
            if(tmpStr.length() < 4){ 
                sb.append("//u00"); 
            }else{ 
                sb.append("//u"); 
            } 
            sb.append(tmpStr); 
        } 
        return sb.toString(); 
    } 
    /** 
     * Just convert Chinese String 
     * @param str 
     * @return 
     */ 
    public static String chinese2Unicode(String str){ 
        StringBuilder sb=new StringBuilder(); 
        for(int i=0;i<str.length();i++) 
        { 
            String tmpStr = Integer.toHexString(str.charAt(i)); 
 
            if(tmpStr.length() < 4){ 
                sb.append(str.charAt(i)); 
            }else{ 
                sb.append("//u"); 
                sb.append(tmpStr); 
            } 
        } 
        return sb.toString(); 
    } 
 
}

原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/10453.html

(0)
上一篇 2021年7月19日
下一篇 2021年7月19日

相关推荐

发表回复

登录后才能评论