Java NIO - CharSet

En Java para cada carácter hay unidades de código Unicode bien definidas que son manejadas internamente por JVM. Así que el paquete Java NIO define una clase abstracta llamada Charset que se usa principalmente para codificar y decodificar charset y UNICODE.

Conjuntos de caracteres estándar

El conjunto de caracteres admitido en java se muestra a continuación.

  • US-ASCII - Caracteres ASCII de siete bits.

  • ISO-8859-1 - Alfabeto latino ISO.

  • UTF-8 - Este es el formato de transformación UCS de 8 bits.

  • UTF-16BE - Este es el formato de transformación UCS de 16 bits con orden de bytes big endian.

  • UTF-16LE - Esta es una transformación UCS de 16 bits con un orden de bytes little endian.

  • UTF-16 - Formato de transformación UCS de 16 bits.

Métodos importantes de la clase Charset

  • forName() - Este método crea un objeto de juego de caracteres para el nombre de juego de caracteres dado. El nombre puede ser canónico o un alias.

  • displayName() - Este método devuelve el nombre canónico del juego de caracteres dado.

  • canEncode() - Este método comprueba si el juego de caracteres dado admite la codificación o no.

  • decode() - Este método decodifica la cadena de un juego de caracteres dado en charbuffer del juego de caracteres Unicode.

  • encode() - Este método codifica charbuffer del juego de caracteres Unicode en el búfer de bytes del juego de caracteres dado.

Ejemplo

El siguiente ejemplo ilustra métodos importantes de la clase 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();
   }
}

Salida

US-ASCII
Demo text for conversion.