Si un tableau d’octets contient du texte non-Unicode, vous pouvez convertir le texte en Unicode avec l’une des méthodes du constructeur String
. Inversement, vous pouvez convertir un objet String
en un tableau d’octets de caractères non-Unicode avec la méthode String.getBytes
. Lorsque vous invoquez l’une de ces méthodes, vous spécifiez l’identifiant d’encodage comme l’un des paramètres.
L’exemple qui suit convertit les caractères entre UTF-8 et Unicode. UTF-8 est un format de transmission pour Unicode qui est sûr pour les systèmes de fichiers UNIX. Le code source complet de l’exemple se trouve dans le fichier StringConverter.java
.
Le programme StringConverter
commence par créer un String
contenant des caractères Unicode :
String original = new String("A" + "\u00ea" + "\u00f1" + "\u00fc" + "C");
Lorsqu’elle est imprimée, la String
nommée original
apparaît comme :
AêñüC
Pour convertir l’objet String
en UTF-8, invoquez la méthode getBytes
et spécifiez l’identifiant d’encodage approprié comme paramètre. La méthode getBytes
renvoie un tableau d’octets au format UTF-8. Pour créer un objet String
à partir d’un tableau d’octets non-Unicode, invoquez le constructeur String
avec le paramètre d’encodage. Le code qui effectue ces appels est enfermé dans un bloc try
, au cas où l’encodage spécifié ne serait pas pris en charge :
Le programme StringConverter
imprime les valeurs des tableaux utf8Bytes
et defaultBytes
pour démontrer un point important : La longueur du texte converti peut ne pas être la même que celle du texte source. Certains caractères Unicode se traduisent par des octets uniques, d’autres par des paires ou des triplets d’octets.
La méthode printBytes
affiche les tableaux d’octets en invoquant la méthode byteToHex
, qui est définie dans le fichier source, UnicodeFormatter.java
. Voici la méthode printBytes
:
La sortie de la méthode printBytes
suit. Notez que seuls les premier et dernier octets, les caractères A et C, sont les mêmes dans les deux tableaux :
.