Java中Unicode和中文互相转换
/** * 汉字转换Unicode * @param str * @return */ public static String StringToUnicode(String str) { char[] arChar = str.toCharArray(); int iValue = 0; String uStr = ""; for (int i = 0; i < arChar.length; i++) { iValue = (int) str.charAt(i); if (iValue <= 256) { // uStr+="& "+Integer.toHexString(iValue)+";"; uStr += "\\" + Integer.toHexString(iValue); } else { // uStr+="&#x"+Integer.toHexString(iValue)+";"; uStr += "\\u" + Integer.toHexString(iValue); } } return uStr; } /** * Unicode转换中文 * @param utfString * @return */ public static String UnicodeToString(String str) { StringBuffer sb = new StringBuffer(); StringTokenizer st = new StringTokenizer(str, "\\u"); while (st.hasMoreTokens()) { sb.append((char) Integer.parseInt(st.nextToken(), 16)); } return sb.toString(); } /** * 中文转Unicode * @param str * @return */ public static String chineToUnicode(String str) { StringBuffer sb = new StringBuffer(); for (int i = 0; i < str.length(); i++) { char c = str.charAt(i); if (c >= 0 && c <= 255) { sb.append(c); } else { sb.append("\\u" + Integer.toHexString(c)); } } return sb.toString(); } /** * Unicode转中文 * @param utfString * @return */ public static String unicodeToChina(String utfString) { StringBuilder sb = new StringBuilder(); int i = -1; int pos = 0; while ((i = utfString.indexOf("\\u", pos)) != -1) { sb.append(utfString.substring(pos, i)); if (i + 5 < utfString.length()) { pos = i + 6; sb.append((char) Integer.parseInt(utfString.substring(i + 2, i + 6), 16)); } } return sb.toString(); } public static void main(String[] args) { String str = StringToUnicode("小明 Love You!小红,@#!@!@#,真爱永恒"); System.out.println(str); System.out.println(UnicodeToString(str)); String a = chineToUnicode("小明Love You!小红,@#!@!@#,真爱永恒"); System.out.println(a); System.out.println(unicodeToChina(a)); } 输出 \u5c0f\u660e\20\4c\6f\76\65\20\59\6f\75\21\u5c0f\u7ea2\uff0c\40\23\uff01\40\uff01\40\23\2c\u771f\u7231\u6c38\u6052 小明 Love You!小红,@#!@!@#,真爱永恒 \u5c0f\u660eLove You!\u5c0f\u7ea2\uff0c@#\uff01@\uff01@#,\u771f\u7231\u6c38\u6052 小明Love You!小红,@#!@!@#,真爱永恒
上述4个方法中,两个Unicode转换中文,两个中文转换Unicode
两者皆有区别,方法1,2中可以将特殊符号进行Unicode转码解码,3,4只处理汉字
使用时最好1-2方法对应,3-4方法对应
除了上面方法之外还有一个非常好的第三方工具StringEscapeUtils