Как преобразовать эту шестнадцатеричную строку в Unicode в Java? - PullRequest
0 голосов
/ 25 апреля 2018

Я получаю ниже результат от веб-службы:

 "\\x52\\x50\\x1F\\x1F\\x44\\x46\\x57\\x47"

Мне нужно получить строки в Unicode-символах, которые, я думаю, будут:

"\u0052\u0050\u001F\u001F\u0044\u0046\u0057\u0047"

т.е. "RPDFWG"

Я не могу использовать replace("\\x", "\u00");, потому что там написано, что \ u00 не является действительным юникодом

1 Ответ

0 голосов
/ 25 апреля 2018

Этот код работает для меня:

try {
  String orig = "\\x52\\x50\\x1F\\x1F\\x44\\x46\\x57\\x47";
  byte[] bytes = new byte[orig.length() / 4];

  for (int i = 0; i < orig.length(); i += 4) {
    bytes[i / 4] = (byte) Integer.parseInt(orig.substring(i + 2, i + 4), 16);
  }

  System.out.println(new String(bytes, "UTF-8"));
}
catch (Exception e) {
  e.printStackTrace();
}

Возможно, вы захотите изменить кодировку на ISO-8859-1 или просто ASCII - из вашего примера я не могу сказать, какая кодировка имеет отношениездесь.

...