В этом случае getBytes
не будет работать, потому что звучит так, как будто ваша Java строка не содержит символов Юникода;он просто содержит пятнадцать обычных символов ASCII, которые представляют escape-последовательность символов Unicode.Вполне вероятно, что независимо от того, является ли ваш вышестоящий компонент ответственным за выход.
Поэтому самый простой способ решить эту проблему - посмотреть, можно ли убедить "другой конец" говорить в Unicode.Если это так, вы получите символы непосредственно в Java, а Боб - ваш дядя.
В противном случае вам нужно будет найти какой-нибудь способ декодирования этих строк.Самым простым способом, который я могу придумать, является итерация, ручное преобразование в char
s и конкатенация, что-то вроде этого:
StringBuilder result = new StringBuilder();
char[] input = inputStr.toCharArray();
for (int i = 0; i < input.length; i++)
{
switch (input[i])
{
case '\\':
// Get the next two characters and turn it into a literal char
String escapeCodeStr = input[i+1] + input[i+2];
char escapedChar = (char)Integer.parseInt(escapeCodeStr, 16);
result.append(escapedChar);
i += 2; // Move pointer to account for two extra characters read
break;
default:
result.append(input[i]);
}
}
return result.toString();
Это не было проверено, но оно иллюстрирует принцип поворотаescape-коды в буквенные символы.