В Java имам низ и искам да го кодирам като масив от байтове (в UTF8 или друго кодиране). Алтернативно, имам байт масив (в някое известно кодиране) и искам да го преобразувам в Java String. Как да направя тези преобразувания?
Конвертиране от String в byte[]:
String s = "some text here";
byte[] b = s.getBytes(StandardCharsets.UTF_8);
Преобразуване от байт[] в низ:
byte[] b = {(byte) 99, (byte)97, (byte)116};
String s = new String(b, StandardCharsets.US_ASCII);
Разбира се, трябва да използвате правилното име на кодиране. В моите примери са използвани US-ASCII и UTF-8, двете най-често срещани кодировки.
String original = "hello world";
byte[] utf8Bytes = original.getBytes("UTF-8");
Можете да конвертирате директно чрез конструктора String(byte[], String) и метода getBytes(String). Java разкрива наличните набори от символи чрез класа Charset. Документацията на JDK изброява поддържаните кодировки.
В 90% от случаите такива преобразувания се извършват върху потоци, така че ще използвате класовете Reader/Writer. Не бихте декодирали поетапно с методите String върху произволни байтови потоци - бихте се оставили отворени за грешки, свързани с многобайтови символи.