Java代码Unicode转中文,中文转Unicode互相转换

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

StringEscapeUtils的使用


赞(52) 打赏
未经允许不得转载:优客志 » JAVA开发
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏