一、 unicode编码
1、 定义
unicode编码简而言之就是将每一个字符用16位2进制数标识。但是通常都用4位的16进制数标识.
例如

1)中文字符串"你好"的unicode码为:\u60\u597d; 
2)英文字符串"ab"的unicode码为:\u0061\u0062; 
其中\u是标识unicode码用的,后面的4位16进制数则是对应字符的unicode码。 
\u -> unicode字符编码
unicode 转汉字 -> System.out.println("\u0061\u0062\u6c49\u5b57")  直接输出即可

2、 编码规则
unicode码对每一个字符用4位16进制数表示。具体规则是:将一个字符(char)的高8位与低8位分别取出,转化为16进制数;如果转化的16进制数的长度不足2位,则在其后补0,然后将高、低8位转成的16进制字符串拼接起来并在前面补上”\u” 即可

3、 代码

public static void main(String[] args) {
        System.out.println(convert("张三李四"));
        System.out.println(string2Unicode("张三李四"));
        String s = "\\u5f20\\u4e09\\u674e\\u56db";
        System.out.println(unicode2String(s));
    }
    /** 
    * 将字符串转成unicode 
    * @param str 待转字符串 
    * @return unicode字符串 
    */ 
    public static String convert(String str) {
        str = (str == null ? "" : str);
        String tmp;
        StringBuffer sb = new StringBuffer(1000);
        char c;
        int i, j;
        sb.setLength(0);
        for (i = 0; i < str.length(); i++) {
            c = str.charAt(i);
            sb.append("\\u");
            j = (c >>> 8); // 取出高8位
            tmp = Integer.toHexString(j);
            if (tmp.length() == 1)
                sb.append("0");
            sb.append(tmp);
            j = (c & 0xFF); // 取出低8位
            tmp = Integer.toHexString(j);
            if (tmp.length() == 1) 
                sb.append("0");
            sb.append(tmp);
        }
        return (new String(sb));
    }

    //unicode转成字符串,与上述过程反向操作即可 
/** 
* 将unicode 字符串 
* @param str 待转字符串 
* @return 普通字符串 
*/ 
public static String revert(String str) 
    {
        str = (str == null ? "" : str);
        if (str.indexOf("\\u") == -1)// 如果不是unicode码则原样返回
            return str;

        StringBuffer sb = new StringBuffer(1000);

        for (int i = 0; i < str.length() - 6;) {
            String strTemp = str.substring(i, i + 6);
            String value = strTemp.substring(2);
            int c = 0;
            for (int j = 0; j < value.length(); j++) {
                char tempChar = value.charAt(j);
                int t = 0;
                switch (tempChar) {
                case 'a':
                    t = 10;
                    break;
                case 'b':
                    t = 11;
                    break;
                case 'c':
                    t = 12;
                    break;
                case 'd':
                    t = 13;
                    break;
                case 'e':
                    t = 14;
                    break;
                case 'f':
                    t = 15;
                    break;
                default:
                    t = tempChar - 48;
                    break;
                }

                c += t * ((int) Math.pow(16, (value.length() - j - 1)));
            }
            sb.append((char) c);
            i = i + 6;
        }
        return sb.toString();
    }
    public static String string2Unicode(String str) {

        StringBuffer unicode = new StringBuffer();
        for (int i = 0; i < str.length(); i++) {
            // 取出每一个字符
            char c = str.charAt(i);
            // 转换为unicode
            unicode.append("\\u" + Integer.toHexString(c));
        }
        return unicode.toString();
    }

    /**
     * unicode 转字符串
     */
    public static String unicode2String(String unicode) {
        StringBuffer string = new StringBuffer();
        String[] hex = unicode.split("\\\\u");
        for (int i = 1; i < hex.length; i++) {
            // 转换出每一个代码点
            int data = Integer.parseInt(hex[i], 16);
            System.out.println(data);
            // 追加成string
            string.append((char) data);
        }

        return string.toString();
    }