Java NIO - CharSet

In Java per ogni carattere esiste un'unità di codice unicode ben definita che è gestita internamente da JVM, quindi il pacchetto Java NIO definisce una classe astratta denominata Charset che viene utilizzata principalmente per la codifica e la decodifica di charset e UNICODE.

Set di caratteri standard

I set di caratteri supportati in java sono riportati di seguito.

  • US-ASCII - Caratteri ASCII a sette bit.

  • ISO-8859-1 - Alfabeto latino ISO.

  • UTF-8 - Questo è il formato di trasformazione UCS a 8 bit.

  • UTF-16BE - Questo è il formato di trasformazione UCS a 16 bit con ordine di byte big endian.

  • UTF-16LE - Questa è una trasformazione UCS a 16 bit con ordine di byte little endian.

  • UTF-16 - Formato di trasformazione UCS a 16 bit.

Metodi importanti della classe Charset

  • forName() - Questo metodo crea un oggetto charset per il nome charset specificato. Il nome può essere canonico o un alias.

  • displayName() - Questo metodo restituisce il nome canonico di un determinato set di caratteri.

  • canEncode() - Questo metodo controlla se il set di caratteri dato supporta la codifica o meno.

  • decode() - Questo metodo decodifica la stringa di un determinato set di caratteri nel buffer di caratteri Unicode.

  • encode() - Questo metodo codifica il buffer di caratteri del set di caratteri unicode nel buffer di byte di un determinato set di caratteri.

Esempio

L'esempio seguente illustra i metodi importanti della classe Charset.

package com.java.nio;
import java.nio.ByteBuffer;
import java.nio.CharBuffer;
import java.nio.charset.Charset;
public class CharsetExample {
   public static void main(String[] args) {
      Charset charset = Charset.forName("US-ASCII");
      System.out.println(charset.displayName());
      System.out.println(charset.canEncode());
      String str= "Demo text for conversion.";
      //convert byte buffer in given charset to char buffer in unicode
      ByteBuffer byteBuffer = ByteBuffer.wrap(str.getBytes());
      CharBuffer charBuffer = charset.decode(byteBuffer);
      //convert char buffer in unicode to byte buffer in given charset
      ByteBuffer newByteBuffer = charset.encode(charBuffer);
      while(newbb.hasRemaining()){
         char ch = (char) newByteBuffer.get();
         System.out.print(ch);
      }
      newByteBuffer.clear();
   }
}

Produzione

US-ASCII
Demo text for conversion.