Java'da Dizeleri UTF8 bayt dizilerine ve dizilerden dönüştürme

Java'da bir String'im var ve bunu bir bayt dizisi olarak kodlamak istiyorum (UTF8 veya başka bir kodlamada). Alternatif olarak, bir bayt dizim var (bilinen bir kodlamada) ve bunu bir Java String'ine dönüştürmek istiyorum. Bu dönüşümleri nasıl yapabilirim?

Çözüm

String'den byte[]'a dönüştürün:

String s = "some text here";
byte[] b = s.getBytes(StandardCharsets.UTF_8);

byte[]'dan String'e dönüştürün:

byte[] b = {(byte) 99, (byte)97, (byte)116};
String s = new String(b, StandardCharsets.US_ASCII);

Elbette doğru kodlama adını kullanmalısınız. Örneklerimde en yaygın iki kodlama olan US-ASCII ve UTF-8 kullanıldı.

Yorumlar (10)
String original = "hello world";
byte[] utf8Bytes = original.getBytes("UTF-8");
Yorumlar (2)

Doğrudan String(byte[], String) yapıcısı ve getBytes(String) yöntemi aracılığıyla dönüştürebilirsiniz. Java, Charset sınıfı aracılığıyla mevcut karakter kümelerini sunar. JDK belgeleri desteklenen kodlamaları listeler.

Zamanın %90'ında, bu tür dönüştürmeler akışlar üzerinde gerçekleştirilir, bu nedenle Reader/Writer sınıflarını kullanırsınız. Rastgele bayt akışlarında String yöntemlerini kullanarak artımlı kod çözme yapmazsınız - kendinizi çok baytlı karakterleri içeren hatalara açık bırakırsınız.

Yorumlar (3)