Java NIO - CharSet
En Java, pour chaque caractère, il existe des unités de code Unicode bien définies qui sont gérées en interne par JVM. Ainsi, le package Java NIO définit une classe abstraite nommée Charset qui est principalement utilisée pour l'encodage et le décodage de charset et UNICODE.
Jeux de caractères standard
Les jeux de caractères pris en charge en java sont indiqués ci-dessous.
US-ASCII - Caractères ASCII à sept bits.
ISO-8859-1 - Alphabet latin ISO.
UTF-8 - Il s'agit du format de transformation UCS 8 bits.
UTF-16BE - Il s'agit d'un format de transformation UCS 16 bits avec un ordre d'octets big endian.
UTF-16LE - Il s'agit d'une transformation UCS de 16 bits avec un ordre d'octet peu fin.
UTF-16 - Format de transformation UCS 16 bits.
Méthodes importantes de la classe Charset
forName() - Cette méthode crée un objet charset pour le nom de charset donné. Le nom peut être canonique ou un alias.
displayName() - Cette méthode renvoie le nom canonique du jeu de caractères donné.
canEncode() - Cette méthode vérifie si le jeu de caractères donné prend en charge l'encodage ou non.
decode() - Cette méthode décode la chaîne d'un jeu de caractères donné en charbuffer d'un jeu de caractères Unicode.
encode() - Cette méthode encode le charbuffer du jeu de caractères Unicode dans le tampon d'octets du jeu de caractères donné.
Exemple
L'exemple suivant illustre des méthodes importantes de la 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();
}
}
Production
US-ASCII
Demo text for conversion.