I Java har jeg en String og ønsker å kode den som en byte-array (i UTF8 eller en annen koding). Alternativt har jeg en byte-array (i en kjent koding) som jeg vil konvertere til en Java String. Hvordan gjør jeg disse konverteringene?
Konverter fra String til byte[]:
String s = "some text here";
byte[] b = s.getBytes(StandardCharsets.UTF_8);
Konverter fra byte[] til String:
byte[] b = {(byte) 99, (byte)97, (byte)116};
String s = new String(b, StandardCharsets.US_ASCII);
Du bør selvfølgelig bruke riktig kodingsnavn. Eksemplene mine brukte US-ASCII og UTF-8, de to vanligste kodingene.
String original = "hello world";
byte[] utf8Bytes = original.getBytes("UTF-8");
Du kan konvertere direkte via konstruktøren String(byte[], String) og metoden getBytes(String). Java eksponerer tilgjengelige tegnsett via klassen Charset. JDK-dokumentasjonen lister opp støttede kodinger.
I 90 % av tilfellene utføres slike konverteringer på strømmer, så du bruker klassene Reader/Writer. Du bør ikke bruke String-metodene til trinnvis avkoding av vilkårlige byte-strømmer - da er du sårbar for feil som involverer multibyte-tegn.