Как я могу создать желаемую строку, используя байтовый массив? - PullRequest
0 голосов
/ 01 октября 2011

У меня есть следующий байтовый массив:

byte[] bytes = new byte[] { (byte) -61, (byte) -61};

Сначала я конвертирую его в строку, используя следующую строку:

strResult = new String(bytes, "ISO_8859_1");

Затем я конвертирую его обратно в байтовый массив, используяследующий код:

byte[] myBytes = strResult.getBytes();

Содержимое myBytes: [-61, -125, -61, -125]

Я проверил "US-ASCII" и "UTF-8"кодировок.Каждая из них возвращает отдельную строку, которая ни одна из них не является [-61, -61].

Как создать строку, содержащую [-61, -61] байтов?

Я имею в виду, что хочу использовать строку при использовании getBytes ();возвращает [-61, -61] байт.Как я могу его создать?

1 Ответ

0 голосов
/ 01 октября 2011

Вы должны использовать ту же самую кодировку для обратного преобразования:

byte[] myBytes = strResult.getBytes("ISO_8859_1");

По сути, строка не поддерживает какие-либо записи о кодировке, первоначально использовавшейся для ее создания - это всегда простопоследовательность кодовых единиц UTF-16.Если вы не указываете кодировку, используемую при преобразовании строки в байтовый массив, она использует кодировку платформы по умолчанию.

Обратите внимание, что если вы пытаетесь кодировать произвольные двоичные данныекак текст (т.е. вы не декодируете что-то, что является подлинным текстом в определенной кодировке), тогда вам вообще не следует использовать эти методы - вы должны использовать Base64 для безопасного кодирования и декодирования.

...