Я наткнулся на странное поведение строки кодирования / декодирования.Взгляните на пример:
@Test
public void testEncoding() {
String str = "\uDD71"; // {56689}
byte[] utf16 = str.getBytes(StandardCharsets.UTF_16); // {-2, -1, -1, -3}
String utf16String = new String(utf16, StandardCharsets.UTF_16); // {65533}
assertEquals(str, utf16String);
}
Я бы предположил, что этот тест пройдёт, но это не так.Может кто-нибудь объяснить, почему закодированная и декодированная строка не совпадает с исходной?