Vous pouvez analyser les octets en utilisant le UTF_16
charset:
Par exemple
byte[] data = {0x06, 0x28};
String string = new String(data, StandardCharsets.UTF_16);
Vous pouvez trouver les évasions en utilisant une expression régulière
private static Pattern ESCAPE_PATTERN = Pattern.compile("\\\\u([0-9a-fA-F]{2})([0-9a-fA-F]{2})");
public static String replaceCharEscapes(String input) {
Matcher m = ESCAPE_PATTERN.matcher(input);
if (!m.find()) {
return input;
}
StringBuilder outputBuilder = new StringBuilder(input.subSequence(0, m.start()));
int lastEnd = m.end();
outputBuilder.append(getChar(m));
while (m.find()) {
outputBuilder.append(input.subSequence(lastEnd, m.start()))
.append(getChar(m));
lastEnd = m.end();
}
if (lastEnd != input.length()) {
outputBuilder.append(input.subSequence(lastEnd, input.length()));
}
return outputBuilder.toString();
}
private static String getChar(Matcher m) {
return new String(new byte[] {
Byte.parseByte(m.group(1), 16),
Byte.parseByte(m.group(2), 16),
});
}
exemple:
replaceCharEscapes("\\u0043:\\\\u0050\\u0072\\u006f\\u0067\\u0072\\u0061\\u006ds")
retours C:\Programs