Encodage des types de base
Les caractères constituent des entités abstraites qui peuvent être représentées à l'aide de différents modèles de caractères ou pages de codes. Par exemple, l'encodage Unicode UTF-16 représente les caractères sous forme de séquences d'entiers 16 bits, tandis qu'Unicode UTF-8 représente les mêmes caractères sous forme d'octets de 8 bits. Le common language runtime utilise l'encodage Unicode UTF-16 (Unicode Transformation Format) pour représenter les caractères.
Les applications qui ciblent le common language runtime utilisent l'encodage pour mapper les représentations de caractères du modèle de caractères natif avec les autres modèles. Les applications utilisent le décodage pour mapper les caractères des modèles autres que le modèle natif avec le modèle natif. Les classes les plus fréquemment utilisées dans l'espace de noms System.Text pour encoder et décoder des caractères sont listées dans le tableau ci-dessous.
Modèle de caractères |
Classe |
Explication |
---|---|---|
Encodage ASCII |
Effectue la conversion en caractères ASCII ou de caractères ASCII. |
|
Encodage multiple |
Convertit des caractères vers et à partir des différents encodages spécifiés dans la méthode Convert. |
|
Encodage Unicode UTF-16 |
Convertit les caractères vers ou à partir de l'encodage UTF-16. Ce modèle représente les caractères sous forme d'entiers 16 bits. |
|
Encodage Unicode UTF-8 |
Convertit les caractères vers ou à partir de l'encodage UTF-8. Ce modèle d'encodage de largeur variable représente les caractères qui utilisent entre un et quatre octets. |
L'exemple de code suivant convertit une chaîne Unicode en tableau d'octets à l'aide de la méthode ASCIIEncoding.GetBytes. Chaque octet du tableau représente la valeur ASCII de la lettre par rapport à sa position dans la chaîne.
Dim MyString As String = "Encoding String."
Dim AE As New ASCIIEncoding()
Dim ByteArray As Byte() = AE.GetBytes(MyString)
Dim x as Integer
For x = 0 To ByteArray.Length - 1
Console.Write("{0} ", ByteArray(x))
Next
string MyString = "Encoding String.";
ASCIIEncoding AE = new ASCIIEncoding();
byte[] ByteArray = AE.GetBytes(MyString);
for(int x = 0;x <= ByteArray.Length - 1; x++)
{
Console.Write("{0} ", ByteArray[x]);
}
L'exemple de code affiche ce qui suit la console. L'octet 69 représente la valeur ASCII du caractère E, l'octet 110 la valeur ASCII du caractère n, etc.
69 110 99 111 100 105 110 103 32 83 116 114 105 110 103 46
Le code suivant convertit le précédent tableau d'octets en un tableau de caractères à l'aide de la classe ASCIIEncoding. La méthode GetChars permet de décoder le tableau d'octets.
Dim AE As New ASCIIEncoding()
Dim ByteArray As Byte() = { 69, 110, 99, 111, 100, 105, 110, 103, 32, 83, 116, 114, 105, 110, 103, 46 }
Dim CharArray As Char() = AE.GetChars(ByteArray)
Dim x As Integer
For x = 0 To CharArray.Length - 1
Console.Write(CharArray(x))
Next
ASCIIEncoding AE = new ASCIIEncoding();
byte[] ByteArray = { 69, 110, 99, 111, 100, 105, 110, 103, 32, 83, 116, 114, 105, 110, 103, 46 };
char[] CharArray = AE.GetChars(ByteArray);
for(int x = 0;x <= CharArray.Length - 1; x++)
{
Console.Write(CharArray[x]);
}
Le code précédent affiche le texte Encoding String. dans la console.