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); }