Преобразование из Javascript-экранированного Unicode в Java Unicode
У меня есть строка запроса, переданная через HTTP-запрос с этим символом:
% u54E6
И я хотел бы сгенерировать строку, которая содержит настоящий китайский символ, чтобы я мог использовать его в другой части приложения, я пытался использовать этот код:
String foo = "%u54E6";
String ufoo = new String(foo.replaceAll("%u([a-zA-Z0-9]{4})", "\\" + "u$1"));
System.out.println("ufoo: " + ufoo);
К сожалению, все, что я получаю, это "u54E6", напечатанное на консоли для значения вместо китайского символа.
Есть ли простой способ преобразовать исходную строку в символ Unicode в Java?
1 ответ
Решение
Вы пытаетесь использовать \u
убегает во время выполнения. Это только время компиляции. Вместо этого вы должны быть в состоянии сделать что-то вроде:
String foo = "%u54E6";
Pattern p = Pattern.compile("%u([a-zA-Z0-9]{4})");
Matcher m = p.matcher(foo);
StringBuffer sb = new StringBuffer();
while (m.find()) {
m.appendReplacement(sb,
String.valueOf((char) Integer.parseInt(m.group(1), 16)));
}
m.appendTail(sb);
System.out.println(sb.toString());