Метод Java String getBytes () кодирует строку в последовательность байтов и сохраняет ее в массиве байтов.
Синтаксис getBytes()
метода String :
string.getBytes() string.getBytes(Charset charset) string.getBytes(String charsetName)
Здесь строка - это объект String
класса.
getBytes()
Метод возвращает массив байтов.
1. getBytes () без параметров
Если вы не передаете никаких параметров, getBytes()
кодирует строку, используя кодировку платформы по умолчанию.
Пример: getBytes () без параметров
import java.util.Arrays; class Main ( public static void main(String() args) ( String str = "Java"; byte() byteArray; // convert the string to a byte array // using platform's default charset byteArray = str.getBytes(); System.out.println(Arrays.toString(byteArray)); ) )
Вывод
(74, 97, 118, 97)
Примечание. Мы использовали Arrays
класс в приведенном выше примере для печати массива байтов в удобочитаемой форме. Это не причем getBytes(
).
2. getBytes () с параметром CharSet
CharSet
В java доступны разные варианты:
- UTF-8 - восьмибитный формат преобразования UCS
- UTF-16 - 16-битный формат преобразования UCS
- UTF-16BE - 16-битный формат преобразования UCS, порядок байтов с прямым порядком байтов
- UTF-16LE - 16-битный формат преобразования UCS, порядок байтов с прямым порядком байтов
- US-ASCII - семибитный ASCII
- ISO-8859-1 - Латинский алфавит ISO № 1
Пример: getBytes () с параметром CharSet
import java.util.Arrays; import java.nio.charset.Charset; class Main ( public static void main(String() args) ( String str = "Java"; byte() byteArray; // using UTF-8 for encoding byteArray = str.getBytes(Charset.forName("UTF-8")); System.out.println(Arrays.toString(byteArray)); // using UTF-16 for encoding byteArray = str.getBytes(Charset.forName("UTF-16")); System.out.println(Arrays.toString(byteArray)); ) )
Вывод
(74, 97, 118, 97) (-2, -1, 0, 74, 0, 97, 0, 118, 0, 97)
Примечание. В приведенной выше программе мы импортировали java.nio.charset.Charset
для использования CharSet
. И мы импортировали Arrays
класс для печати массива байтов в читаемой форме.
3. getBytes () со строковым параметром
Вы также можете указать тип кодировки для getBytes()
использования строк. При использовании getBytes()
таким образом вы должны заключить код в блок try… catch.
Пример: getBytes () со строковым параметром
import java.util.Arrays; class Main ( public static void main(String() args) ( String str = "Java"; byte() byteArray; try ( byteArray = str.getBytes("UTF-8"); System.out.println(Arrays.toString(byteArray)); byteArray = str.getBytes("UTF-16"); System.out.println(Arrays.toString(byteArray)); // wrong encoding // throws an exception byteArray = str.getBytes("UTF-34"); System.out.println(Arrays.toString(byteArray)); ) catch (Exception e) ( System.out.println(e + " encoding is wrong"); ) ) )
Вывод
(74, 97, 118, 97) (-2, -1, 0, 74, 0, 97, 0, 118, 0, 97) java.io.UnsupportedEncodingException: кодировка UTF-34 неверна
Примечание. Мы импортировали java.util.Arrays, чтобы напечатать массив байтов в читаемой форме. Это не причем getBytes()
.