Konvertierung von Strings in und aus UTF8 Byte-Arrays in Java

In Java habe ich einen String und möchte ihn als Byte-Array kodieren (in UTF8 oder einer anderen Kodierung). Alternativ habe ich ein Byte-Array (in einer bekannten Kodierung) und möchte es in einen Java-String konvertieren. Wie führe ich diese Konvertierungen durch?

Lösung

Umwandlung von String in byte[]:

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

Konvertieren von byte[] in String:

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

Sie sollten natürlich den richtigen Kodierungsnamen verwenden. In meinen Beispielen wurden US-ASCII und UTF-8 verwendet, die beiden gängigsten Kodierungen.

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

Sie können direkt über den String(byte[], String) Konstruktor und die Methode getBytes(String) konvertieren. Java stellt die verfügbaren Zeichensätze über die Klasse Charset zur Verfügung. Die JDK-Dokumentation listet unterstützte Kodierungen auf.

In 90 % der Fälle werden solche Konvertierungen mit Streams durchgeführt, so dass Sie die Klassen Reader/Writer verwenden würden. Sie würden nicht inkrementell dekodieren, indem Sie die String-Methoden für beliebige Byte-Streams verwenden - Sie würden sich selbst Bugs aussetzen, die Multibyte-Zeichen betreffen.

Kommentare (3)