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.