Лишние два байта при получении байтов из строки

99
20 августа 2019, 01:40

Есть такой код:

String testEmail = "player@gmail.com";
byte[] email = testEmail.getBytes(StandardCharsets.UTF_16);

В результате имею:

-2   -1   0   112   0   108   0 ...

-2 и -1 какой-то мусор получается или что это вообще? Так как потом последние два байта отсутствуют...

Answer 1

Это маркер последовательности байтов (byte order mark - BOM), вставляется для обозначения кодировки Юникод. По сути UTF-16 это 2 байта информации и этот маркер обозначается как 0xFEFF, но так как вы выводите по байту получается -2 и -1.

Чтобы избавиться от них, можете использовать StandardCharsets.UTF_16BE.

READ ALSO
Наследование JavaFx

Наследование JavaFx

Начал изучать Java и не могу понять работу наследования

125
Не получается отправить JSON из Java на Flask сервер

Не получается отправить JSON из Java на Flask сервер

Я хочу отправить запрос на сервер сделанный на Flask запрос с данными в формате JSON(в некоторых случаях POST запрос, а в некоторых случаях GET) из программы...

102
Как с помощью retorfit сделать rpcjson запрос

Как с помощью retorfit сделать rpcjson запрос

Нужно подключиться к удаленном апи по протоколу rpc json примерный формат такой

114