java內部使用utf-16編碼 UTF-16 是一種變長的 2 或 4 字節編碼模式。對於 BMP 內的字符使用 2 字節編碼,其它的則使用 4 字節組成所謂的代理對來編碼。java
public static String unicode2Chinese(String str){ str = str.replace("\\",""); String[] arr = str.split("u"); String text = ""; for(int i = 1; i < arr.length; i++){ int hexVal = Integer.parseInt(arr[i], 16); text += (char)hexVal; } System.out.println(text); return text; }
public String ChineseToUnicode(String s) { String s1 = ""; for (int i = 0; i < s.length(); i++) { s1 = s1 + "\\u" + Integer.toHexString(s.charAt(i) & 0xffff); } System.out.println(s1); return s1; }
StringEscapeUtils.unescapeJava(str)
/** * byte數組轉十六進制字符串 * * @param b * @return */ public static String byte2hex(byte[] b) { String hs = ""; String stmp = ""; for (int n = 0; n < b.length; n++) { stmp = (java.lang.Integer.toHexString(b[n] & 0XFF)); if (stmp.length() == 1) hs = hs + "0" + stmp; else hs = hs + stmp; System.out.print(stmp + " "); } // System.out.println(hs.toUpperCase()); return hs.toUpperCase(); }
private final static char[] hexArray = "0123456789ABCDEF".toCharArray(); public static String bytesToHex(byte[] bytes) { char[] hexChars = new char[bytes.length * 2]; for ( int j = 0; j < bytes.length; j++ ) { int v = bytes[j] & 0xFF; hexChars[j * 2] = hexArray[v >>> 4]; hexChars[j * 2 + 1] = hexArray[v & 0x0F]; } return new String(hexChars); }