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
未经允许请勿转载:程序喵 » Java代码Unicode转中文,中文转Unicode互相转换
程序喵