1. 程式人生 > 其它 >unicode轉換工具類

unicode轉換工具類

技術標籤:工具類java

UnicodeConvertUtils

/**
 * 中文字串和unicode互轉工具類
 */
public class UnicodeConvertUtils {

    /**
     * 實現js的escape函式
     *
     * @param input
     *      待傳入字串
     * @return
     */
    public static String escape(String input) {
        int len = input.length();
        int i;
        char
j; StringBuffer result = new StringBuffer(); result.ensureCapacity(len * 6); for (i = 0; i < len; i++) { j = input.charAt(i); if (Character.isDigit(j) || Character.isLowerCase(j) || Character.isUpperCase(j)) { result.append(j); }
else if (j < 256) { result.append("%"); if (j < 16) { result.append("0"); } result.append(Integer.toString(j, 16)); } else { result.append("%u"); result.
append(Integer.toString(j, 16)); } } return result.toString(); } /** * 實現js的unescape函式 * * @param input * 待傳入字串 * @return */ public static String unescape(String input) { int len = input.length(); StringBuffer result = new StringBuffer(); result.ensureCapacity(len); int lastPos = 0, pos = 0; char ch; while (lastPos < len) { pos = input.indexOf("%", lastPos); if (pos == lastPos) { if (input.charAt(pos + 1) == 'u') { ch = (char) Integer.parseInt(input.substring(pos + 2, pos + 6), 16); result.append(ch); lastPos = pos + 6; } else { ch = (char) Integer.parseInt(input.substring(pos + 1, pos + 3), 16); result.append(ch); lastPos = pos + 3; } } else { if (pos == -1) { result.append(input.substring(lastPos)); lastPos = len; } else { result.append(input.substring(lastPos, pos)); lastPos = pos; } } } return result.toString(); } /** * unicode轉中文 * * @param input * 待傳入字串 * @return */ public static String toGb2312(String input) { input = input.trim().replaceAll("(?i)\\\\u", "%u"); return unescape(input); } /** * 中文字串轉unicode * * @param input * 待傳入字串 * @return */ public static String toUnicode(String input) { input = input.trim(); String output = escape(input).toLowerCase().replace("%u", "\\u"); return output.replaceAll("(?i)%7b", "{").replaceAll("(?i)%7d", "}").replaceAll("(?i)%3a", ":") .replaceAll("(?i)%2c", ",").replaceAll("(?i)%27", "'").replaceAll("(?i)%22", "\"") .replaceAll("(?i)%5b", "[").replaceAll("(?i)%5d", "]").replaceAll("(?i)%3D", "=") .replaceAll("(?i)%20", " ").replaceAll("(?i)%3E", ">").replaceAll("(?i)%3C", "<") .replaceAll("(?i)%3F", "?").replaceAll("(?i)%5c", "\\"); } }