Преобразование из 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());
Другие вопросы по тегам