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?
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.
String original = "hello world";
byte[] utf8Bytes = original.getBytes("UTF-8");
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.