Я не могу комментировать, но не хочу начинать новую тему. Но это не работает. Простое путешествие в оба конца:
byte[] b = new byte[]{ 0, 0, 0, -127 }; // 0x00000081
String s = new String(b,StandardCharsets.UTF_8); // UTF8 = 0x0000, 0x0000, 0x0000, 0xfffd
b = s.getBytes(StandardCharsets.UTF_8); // [0, 0, 0, -17, -65, -67] 0x000000efbfbd != 0x00000081
Мне нужен b [] один и тот же массив до и после кодирования, которого нет (это относится к первому ответу).