A partir d'un objet Charset, il devient possible d'obtenir un décodeur (CharsetDecoder) et/ou un encodeur (CharsetEncoder) au moyen respectivement des méthodes d'instances newDecoder() et newEncoder() de la classe Charset.

CharsetDecoder decodeur = utf8.newDecoder();
CharsetEncoder encodeur = utf8.newEncoder();

Le décodage des séquences d'octets s'opère par une invocation de la méthode decode() de la classe CharsetDecoder. Le paramètre de la méthode decode() est un tampon d'octets ByteBuffer, lequel contient les données provenant d'une source quelconque telle qu'un fichier ou d'un socket réseau. La méthode retourne un objet CharBuffer qui renferme la chaîne de caractères résultant du décodage.

ByteBuffer tampon = ByteBuffer.allocate(1024);
//Remplissage du tampon
CharBuffer cb = decoder.decode(tampon);

L'encodage des chaînes de caractères se réalise par un appel de l'une des méthodes encode() de la classe CharsetEncoder. La méthode encode() prend comme argument un tampon de caractères CharBuffer. Les méthodes retournent un tampon ByteBuffer contenant le résultat de l'encodage.

String chaine = "Une chaîne de caractères...";
CharBuffer cb = CharBuffer.wrap(chaine);
ByteBuffer bb1 = encoder.encode(cb);
ByteBuffer bb2 = encoder.encode("Une chaîne de caractères...");

La classe Charset dispose également des méthodes d'encodage et de décodage. Toutefois, ces méthodes convertissent des octets en caractères Unicode, ou inversement.