Java NIO - zestaw znaków

W Javie dla każdego znaku istnieją dobrze zdefiniowane jednostki kodu Unicode, które są wewnętrznie obsługiwane przez JVM, więc pakiet Java NIO definiuje abstrakcyjną klasę o nazwie Charset, która jest używana głównie do kodowania i dekodowania zestawu znaków i UNICODE.

Standardowe zestawy znaków

Obsługiwane zestawy znaków w java podano poniżej.

  • US-ASCII - Siedem bitowych znaków ASCII.

  • ISO-8859-1 - Alfabet łaciński ISO.

  • UTF-8 - To jest 8-bitowy format transformacji UCS.

  • UTF-16BE - To jest 16-bitowy format transformacji UCS z kolejnością bajtów big endian.

  • UTF-16LE - To jest 16-bitowa transformacja UCS z małą kolejnością bajtów endian.

  • UTF-16 - 16-bitowy format transformacji UCS.

Ważne metody klasy Charset

  • forName() - Ta metoda tworzy obiekt zestawu znaków dla podanej nazwy zestawu znaków.Nazwa może być kanoniczna lub alias.

  • displayName() - Ta metoda zwraca kanoniczną nazwę podanego zestawu znaków.

  • canEncode() - Ta metoda sprawdza, czy dany zestaw znaków obsługuje kodowanie, czy nie.

  • decode() - Ta metoda dekoduje ciąg podanego zestawu znaków do bufora znaków zestawu Unicode.

  • encode() - Ta metoda koduje bufor znaków zestawu znaków Unicode do bufora bajtów danego zestawu znaków.

Przykład

Poniższy przykład ilustruje ważne metody klasy 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();
   }
}

Wynik

US-ASCII
Demo text for conversion.