logo

Java-String-Kodierung

In Java, wenn wir uns damit befassen Zeichenfolge Manchmal ist es erforderlich, eine Zeichenfolge in einem bestimmten Zeichensatz zu kodieren. Codierung ist eine Möglichkeit, Daten von einem Format in ein anderes zu konvertieren. String-Objekte verwenden die UTF-16-Codierung. Das Problem mit UTF-16 besteht darin, dass es nicht geändert werden kann. Es gibt nur eine Möglichkeit, eine andere Codierung zu erhalten, nämlich das Byte[]-Array. Die Art der Kodierung ist nicht geeignet, wenn wir unerwartete Daten erhalten. In diesem Abschnitt werden wir lernen wie man einen String kodiert Java .

binärer Suchbaum

Hinweis: Es ist nicht möglich, eine Zeichenfolge in UTF-8 zu kodieren. Verwenden Sie also entweder ByteBuffer oder rufen Sie ein Array darauf auf, um ein Byte[] zu erhalten.

Bevor wir mit diesem Abschnitt fortfahren, müssen wir die Zeichenkodierung verstehen. Werfen wir einen kurzen Blick darauf. Lasst uns verstehen warum wir einen String kodieren müssen .

Zeichenkodierung ist eine Technik zur Umwandlung von Textdaten in Binärzahlen. Wir können bestimmten Zeichen eindeutige numerische Werte zuweisen und diese Zahlen in eine Binärsprache umwandeln. Diese Binärzahlen können später basierend auf ihren Werten wieder in die ursprünglichen Zeichen umgewandelt werden.

Problem

Angenommen, wir haben eine deutsche Saite Tschüss und es ist erforderlich, es zu kodieren. Betrachten Sie den folgenden Codeausschnitt:

 String str = 'Tsch�ss'; byte[] bytesOfString = str.getBytes(); String encoded_String = new String(bytesOfString, StandardCharsets.US_ASCII); assertNotEquals(encoded_String, str); 

Wenn wir die Zeichenfolge mithilfe von US_ASCII codieren, ergibt sich das Tsch?ss weil die US_ASCII-Kodierung das Nicht-ASCII-Zeichen ( u ). Wenn wir eine ASCII-codierte Zeichenfolge in UTF-8 konvertieren, erhalten wir dieselbe Zeichenfolge.

 String str = 'GoodBye'; byte[] bytesOfString = str.getBytes(); String asciiEncondedEnglishString = new String(bytesOfString, StandardCharsets.US_ASCII); assertEquals(encoded_String, str); 

Wenn ein Byte[]-Array Nicht-Unicode-Text enthält, können wir den Text mit in Unicode konvertieren Zeichenfolge Konstrukteur. Umgekehrt können wir mit dem auch ein String-Objekt in ein Byte[]-Array aus Nicht-Unicode-Zeichen konvertieren String.getBytes() Methode. Lassen Sie uns die Zeichenfolge mit dem kodieren getBytes() Methode.

Verwenden der Methode String.getBytes()

Java Zeichenfolge Klasse bietet die getBytes()-Methode Das wird verwendet, um den String in UTF-8 zu kodieren. Die Methode wandelt die Zeichenfolge in eine Folge von Bytes um und speichert das Ergebnis in einem Array.

Syntax:

Java-String-Teilzeichenfolge
 public byte[] getBytes(String charsetName) throws UnsupportedEncodingException 

Es analysiert charsetName als Parameter und gibt das Byte-Array zurück. Es wirft die UnsupportedEncodingException wenn der benannte Zeichensatz nicht unterstützt wird.

Lassen Sie uns ein Java-Programm erstellen, das eine Zeichenfolge in die UTF-8-Kodierung konvertiert.

VLC YouTube-Videos herunterladen

StringEncodingExample.java

 public class StringEncodingExample { public static void main(String args[]) throws Exception { //string to encode String str = 'Google Cloud'; //invokes the getBytes() method and stores an array of bytes into array[] byte array[] = str.getBytes('UTF8'); System.out.println('Encoded String: '); //enhanced for loop that iterates over the array for (byte x: array) { //prints the sequence of bytes System.out.print(x+' '); } } } 

Ausgabe:

 Encoded String: 71 111 111 103 108 101 32 67 108 111 117 100 

Verwenden der StandardCharsets-Klasse

Wir können auch die Klasse StandardCharset verwenden, um die Zeichenfolge zu kodieren. Es gibt zwei Schritte zum Codieren der Zeichenfolge. Dekodieren Sie zunächst die Zeichenfolge in Bytes und kodieren Sie sie dann in UTF-8. Betrachten Sie beispielsweise den folgenden Code:

 String str = ' Tsch�ss'; ByteBuffer buffer = StandardCharsets.UTF_8.encode(str); String encoded_String = StandardCharsets.UTF_8.decode(buffer).toString(); assertEquals(str, encoded_String); 

Eine andere Möglichkeit, einen String zu kodieren, ist die Verwendung der Base64-Kodierung. Wir werden die Base64-Kodierung und -Dekodierung im nächsten Abschnitt besprechen.