logo

Codifica stringhe Java

In Java, quando abbiamo a che fare con Corda a volte è necessario codificare una stringa in un set di caratteri specifico. Codifica è un modo per convertire i dati da un formato all'altro. Gli oggetti stringa utilizzano la codifica UTF-16. Il problema con UTF-16 è che non può essere modificato. Esiste solo un modo che può essere utilizzato per ottenere una codifica diversa, ad esempio l'array byte[] . Il metodo di codifica non è adatto se si ottengono dati imprevisti. In questa sezione impareremo come codificare una stringa in Giava .

Nota: non è possibile codificare una stringa in UTF-8. Quindi, usa ByteBuffer o chiama un array su di esso per ottenere un byte[].

Prima di procedere in questa sezione, dobbiamo comprendere la codifica dei caratteri. Diamo una rapida occhiata. Capiamo perché dobbiamo codificare una stringa .

Codifica dei caratteri è una tecnica per convertire i dati di testo in numeri binari. Possiamo assegnare valori numerici univoci a caratteri specifici e convertire quei numeri in linguaggio binario. Questi numeri binari successivamente possono essere riconvertiti in caratteri originali in base ai loro valori.

Problema

Supponiamo di avere una stringa tedesca Ciao ed è necessario codificarlo. Considera il seguente frammento di codice:

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

Se codifichiamo la stringa utilizzando US_ASCII, restituisce il file Ciao perché la codifica US_ASCII non comprende il carattere non ASCII ( tu ). Quando convertiamo una stringa codificata ASCII in UTF-8, otteniamo la stessa stringa.

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

Se un array byte[] contiene testo non Unicode, possiamo convertire il testo in Unicode con Corda costruttore. Al contrario, possiamo anche convertire un oggetto String in un array byte[] di caratteri non Unicode con il comando String.getBytes() metodo. Codifichiamo la stringa utilizzando il file getBytes() metodo.

Utilizzo del metodo String.getBytes()

Giava Corda classe fornisce il metodo getBytes() utilizzato per codificare la stringa in UTF-8. Il metodo converte la stringa in una sequenza di byte e memorizza il risultato in un array.

Sintassi:

 public byte[] getBytes(String charsetName) throws UnsupportedEncodingException 

Analizza charsetName come parametro e restituisce l'array di byte. Lancia il Eccezione di codifica non supportata se il set di caratteri denominato non è supportato.

Creiamo un programma Java che converte una stringa nella codifica UTF-8.

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+' '); } } } 

Produzione:

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

Utilizzo della classe StandardCharsets

Possiamo anche usare la classe StandardCharset per codificare la stringa. Ci sono due passaggi per codificare la stringa. Innanzitutto, decodifica la stringa in byte e quindi codificala in UTF-8. Ad esempio, considera il seguente codice:

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

Un altro modo per codificare una stringa è utilizzare la codifica Base64. Discuteremo la codifica e decodifica Base64 nella prossima sezione.