ответ Alexander объясняет, почему это там, но не, как избавиться от него. Просто необходимо определить порядок байтов, который Вы хотите на имя кодирования:
String source = "0123456789";
byte[] byteArray = source.getBytes("UTF-16LE"); // Or UTF-16BE
Могут быть первые два байта, порядок байтов Mark . Это определяет порядок байтов в каждом 16-разрядном слове, используемом в кодировании.
Попытайтесь распечатать байты в шестнадцатеричном числе для наблюдения, где дополнительные 2 байта добавляются - они в запуске или конце?
я выбираю это, Вы найдете маркер порядка байтов в запуске (0xFEFF) - это позволяет любому потребление (получающее) массив байтов, чтобы распознать, с прямым порядком байтов ли кодирование или с обратным порядком байтов.
UTF имеет маркер порядка байтов вначале, который говорит, что этот поток кодируется в конкретном формате. Как другие пользователи указали,
, 1-й байт является 0XFE
, 2-й байт является 0XFF
, который остающиеся байты
0
48
0
49
0
50
0
51
0
52
0
53
0
54
0
55
0
56
0
57