"Java" programoje turiu eilutę ir noriu ją užkoduoti kaip baitų masyvą (UTF8 ar kita kodavimo forma). Arba turiu baitų masyvą (kokiu nors žinomu kodavimu) ir noriu jį konvertuoti į "Java" eilutę. Kaip atlikti šias konversijas?
Konvertuokite iš eilutės į baitą[]:
String s = "some text here";
byte[] b = s.getBytes(StandardCharsets.UTF_8);
Konvertuoti iš baito[] į eilutę:
byte[] b = {(byte) 99, (byte)97, (byte)116};
String s = new String(b, StandardCharsets.US_ASCII);
Žinoma, turėtumėte naudoti teisingą kodavimo pavadinimą. Mano pavyzdžiuose buvo naudojami US-ASCII ir UTF-8 - du dažniausiai pasitaikantys kodai.
String original = "hello world";
byte[] utf8Bytes = original.getBytes("UTF-8");
Galite konvertuoti tiesiogiai naudodami String(byte[], String) konstruktorių ir getBytes(String) metodą. "Java" pateikia galimus simbolių rinkinius per Charset klasę. JDK dokumentacijoje pateikiamas palaikomų kodų sąrašas.
90 % atvejų tokie konvertavimai atliekami srautams, todėl naudokite Reader/Writer klases. Negalima inkrementiniu būdu dekoduoti naudojant "String" metodus savavališkiems baitų srautams - paliksite save atvirą klaidoms, susijusioms su daugiabalyčiais simboliais.