decode UTF8 to String
class Main { public static final String HEX_DIGITS = "0123456789ABCDEF"; public static char decodeUTF8(String src) { if (src == null) { throw new IllegalArgumentException("Malformed \\uxxxx encoding."); } if (!(src.startsWith("\\u") && src.length() <= 6)) { throw new IllegalArgumentException("Malformed \\uxxxx encoding."); } char[] sources = src.substring(2).toCharArray(); char res = 0; for (char nextChar : sources) { int digit = HEX_DIGITS.indexOf(Character.toUpperCase(nextChar)); res = (char) (res * 16 + digit); } return res; } public static String decodeUTF8String(String src) { StringBuilder sb = new StringBuilder(); char[] sources = src.toCharArray(); for (int i = 0; i < sources.length; i++) { if (sources[i] == '\\' && i < sources.length - 5 && sources[i + 1] == 'u') { String utf8 = "" + sources[i++] + sources[i++] + sources[i++] + sources[i++] + sources[i++] + sources[i]; sb.append(decodeUTF8(utf8)); i = i + 5; } else { sb.append(sources[i]); } } return sb.toString(); } }