Assembly : mscorlib (dans mscorlib.dll)
Syntaxe<SerializableAttribute> _ <ComVisibleAttribute(True)> _ Public MustInherit Class Encoding Implements ICloneable
Dim instance As Encoding
[SerializableAttribute] [ComVisibleAttribute(true)] public abstract class Encoding : ICloneable
[SerializableAttribute] [ComVisibleAttribute(true)] public ref class Encoding abstract : ICloneable
/** @attribute SerializableAttribute() */ /** @attribute ComVisibleAttribute(true) */ public abstract class Encoding implements ICloneable
SerializableAttribute ComVisibleAttribute(true) public abstract class Encoding implements ICloneable
NotesLe codage est le processus de transformation d'un jeu de caractères Unicode en une séquence d'octets. Le décodage est le processus inverse ; il consiste à transformer une séquence d'octets codés en un jeu de caractères Unicode.
La norme Unicode assigne un point de code (nombre) à chaque caractère de chaque script pris en charge. Le format UTF (Unicode Transformation Format) permet de coder ce point de code. La norme Unicode version 3.2 utilise les formats UTF suivants :
-
UTF-8 qui représente chaque point de code sous la forme d'une séquence d'un à quatre octets.
-
UTF-16 qui représente chaque point de code sous la forme d'une séquence d'un à deux entiers 16 bits.
-
UTF-32 qui représente chaque point de code sous la forme d'un entier 32 bits.
Le .NET Framework fournit les implémentations suivantes de la classe Encoding pour prendre en charge les codages Unicode et autres :
-
ASCIIEncoding code les caractères Unicode en caractères ASCII simples de 7 bits. Ce codage ne prend en charge que les valeurs de caractères comprises entre U+0000 et U+007F. Page de codes 20127. Également disponible à travers la propriété ASCII.
-
UTF7Encoding code les caractères Unicode à l'aide du codage UTF-7. Ce codage prend en charge toutes les valeurs de caractères Unicode. Page de codes 65000. Également disponible à travers la propriété UTF7.
-
UTF8Encoding code les caractères Unicode à l'aide du codage UTF-8. Ce codage prend en charge toutes les valeurs de caractères Unicode. Page de codes 65001. Également disponible à travers la propriété UTF8.
-
UnicodeEncoding code les caractères Unicode à l'aide du codage UTF-16. Les deux ordres de primauté des octets sont pris en charge : primauté des octets de poids faible (Little endian, page de codes 1200) et primauté des octets de poids fort (Big endian, page de codes 1201). Également disponible via la propriété Unicode et la propriété BigEndianUnicode.
-
UTF32Encoding code les caractères Unicode à l'aide du codage UTF-32. Les deux ordres de primauté des octets sont pris en charge : primauté des octets de poids faible (Little endian, page de codes 65005) et primauté des octets de poids fort (Big endian, page de codes 65006). Également disponible via la propriété UTF32.
Utilisez la méthode GetEncoding pour obtenir d'autres codages. Utilisez la méthode GetEncodings pour obtenir la liste de tous les codages.
Le tableau suivant répertorie les codages et leurs pages de codes associées. Un astérisque dans la dernière colonne indique que la page de codes est prise en charge en mode natif par le .NET Framework, indépendamment de la plate-forme sous-jacente.
| Page de codes | Nom | Nom complet |
|
|---|---|---|---|
| 37 | IBM037 | IBM EBCDIC (EU-Canada) |
|
| 437 | IBM437 | OEM États-Unis |
|
| 500 | IBM500 | IBM EBCDIC (International) |
|
| 708 | ASMO-708 | Arabe (ASMO 708) |
|
| 720 | DOS-720 | Arabe (DOS) |
|
| 737 | ibm737 | Grec (DOS) |
|
| 775 | ibm775 | Baltique (DOS) |
|
| 850 | ibm850 | Europe de l'Ouest (DOS) |
|
| 852 | ibm852 | Europe centrale (DOS) |
|
| 855 | IBM855 | OEM Cyrillique |
|
| 857 | ibm857 | Turc (DOS) |
|
| 858 | IBM00858 | OEM Multilingue Latin I |
|
| 860 | IBM860 | Portugais (DOS) |
|
| 861 | ibm861 | Islandais (DOS) |
|
| 862 | DOS-862 | Hébreu (DOS) |
|
| 863 | IBM863 | Français canadien (DOS) |
|
| 864 | IBM864 | Arabe (864) |
|
| 865 | IBM865 | Nordique (DOS) |
|
| 866 | cp866 | Cyrillique (DOS) |
|
| 869 | ibm869 | Grec moderne (DOS) |
|
| 870 | IBM870 | IBM EBCDIC (Multilingue Latin-2) |
|
| 874 | windows-874 | Thaï (Windows) |
|
| 875 | cp875 | IBM EBCDIC (Grec moderne) |
|
| 932 | shift_jis | Japonais (Shift-JIS) |
|
| 936 | gb2312 | Chinois simplifié (GB2312) | * |
| 949 | ks_c_5601-1987 | Coréen |
|
| 950 | big5 | Chinois traditionnel (Big5) |
|
| 1026 | IBM1026 | IBM EBCDIC (Turc Latin-5) |
|
| 1047 | IBM01047 | IBM Latin-1 |
|
| 1140 | IBM01140 | IBM EBCDIC (EU-Canada-Euro) |
|
| 1141 | IBM01141 | IBM EBCDIC (Allemagne-Euro) |
|
| 1142 | IBM01142 | IBM EBCDIC (Danemark-Norvège-Euro) |
|
| 1143 | IBM01143 | IBM EBCDIC (Finlande-Suède-Euro) |
|
| 1144 | IBM01144 | IBM EBCDIC (Italie-Euro) |
|
| 1145 | IBM01145 | IBM EBCDIC (Espagne-Euro) |
|
| 1146 | IBM01146 | IBM EBCDIC (RU-Euro) |
|
| 1147 | IBM01147 | IBM EBCDIC (France-Euro) |
|
| 1148 | IBM01148 | IBM EBCDIC (International-Euro) |
|
| 1149 | IBM01149 | IBM EBCDIC (Islandais-Euro) |
|
| 1200 | utf-16 | Unicode | * |
| 1201 | unicodeFFFE | Unicode (Big-Endian) | * |
| 1250 | windows-1250 | Europe centrale (Windows) |
|
| 1251 | windows-1251 | Cyrillique (Windows) |
|
| 1252 | Windows -1252 | Europe de l'Ouest (Windows) | * |
| 1253 | windows-1253 | Grec (Windows) |
|
| 1254 | windows-1254 | Turc (Windows) |
|
| 1255 | windows-1255 | Hébreu (Windows) |
|
| 1256 | windows-1256 | Arabe (Windows) |
|
| 1257 | windows-1257 | Baltique (Windows) |
|
| 1258 | windows-1258 | Vietnamien (Windows) |
|
| 1361 | Johab | Coréen (Johab) |
|
| 10000 | macintosh | Europe de l'Ouest (Mac) |
|
| 10001 | x-mac-japanese | Japonais (Mac) |
|
| 10002 | x-mac-chinesetrad | Chinois traditionnel (Mac) |
|
| 10003 | x-mac-korean | Coréen (Mac) | * |
| 10004 | x-mac-arabic | Arabe (Mac) |
|
| 10005 | x-mac-hebrew | Hébreu (Mac) |
|
| 10006 | x-mac-greek | Grec (Mac) |
|
| 10007 | x-mac-cyrillic | Cyrillique (Mac) |
|
| 10008 | x-mac-chinesesimp | Chinois simplifié (Mac) | * |
| 10010 | x-mac-romanian | Roumain (Mac) |
|
| 10017 | x-mac-ukrainian | Ukrainien (Mac) |
|
| 10021 | x-mac-thai | Thaï (Mac) |
|
| 10029 | x-mac-ce | Europe centrale (Mac) |
|
| 10079 | x-mac-icelandic | Islandais (Mac) |
|
| 10081 | x-mac-turkish | Turc (Mac) |
|
| 10082 | x-mac-croatian | Croate (Mac) |
|
| 20000 | x-Chinese-CNS | Chinois traditionnel (CNS) |
|
| 20001 | x-cp20001 | TCA Taïwan |
|
| 20002 | x-Chinese-Eten | Chinois traditionnel (Eten) |
|
| 20003 | x-cp20003 | IBM5550 Taïwan |
|
| 20004 | x-cp20004 | TeleText Taïwan |
|
| 20005 | x-cp20005 | Wang Taïwan |
|
| 20105 | x-IA5 | Europe de l'Ouest (IA5) |
|
| 20106 | x-IA5-German | Allemand (IA5) |
|
| 20107 | x-IA5-Swedish | Suédois (IA5) |
|
| 20108 | x-IA5-Norwegian | Norvégien (IA5) |
|
| 20127 | us-ascii | US-ASCII | * |
| 20261 | x-cp20261 | T.61 |
|
| 20269 | x-cp20269 | ISO -6937 |
|
| 20273 | IBM273 | IBM EBCDIC (Allemagne) |
|
| 20277 | IBM277 | IBM EBCDIC (Danemark-Norvège) |
|
| 20278 | IBM278 | IBM EBCDIC (Finlande-Suède) |
|
| 20280 | IBM280 | IBM EBCDIC (Italie) |
|
| 20284 | IBM284 | IBM EBCDIC (Espagne) |
|
| 20285 | IBM285 | IBM EBCDIC (RU) |
|
| 20290 | IBM290 | IBM EBCDIC (Japonais katakana) |
|
| 20297 | IBM297 | IBM EBCDIC (France) |
|
| 20420 | IBM420 | IBM EBCDIC (Arabe) |
|
| 20423 | IBM423 | IBM EBCDIC (Grec) |
|
| 20424 | IBM424 | IBM EBCDIC (Hébreu) |
|
| 20833 | x-EBCDIC-KoreanExtended | IBM EBCDIC (Coréen étendu) |
|
| 20838 | IBM-Thaï | IBM EBCDIC (Thaï) |
|
| 20866 | koi8-r | Cyrillique (KOI8-R) |
|
| 20871 | IBM871 | IBM EBCDIC (islandais) |
|
| 20880 | IBM880 | IBM EBCDIC (Russe cyrillique) |
|
| 20905 | IBM905 | IBM EBCDIC (Turc) |
|
| 20924 | IBM00924 | IBM Latin-1 |
|
| 20932 | EUC-JP | Japonais (JIS 0208-1990 et 0212-1990) |
|
| 20936 | x-cp20936 | Chinois simplifié (GB2312-80) | * |
| 20949 | x-cp20949 | Coréen Wansung | * |
| 21025 | cp1025 | IBM EBCDIC (Serbe cyrillique-bulgare) |
|
| 21866 | koi8-u | Cyrillique (KOI8-U) |
|
| 28591 | iso-8859-1 | Europe de l'Ouest (ISO) | * |
| 28592 | iso-8859-2 | Europe centrale (ISO) |
|
| 28593 | iso-8859-3 | Latin 3 (ISO) |
|
| 28594 | iso-8859-4 | Baltique (ISO) |
|
| 28595 | iso-8859-5 | Cyrillique (ISO) |
|
| 28596 | iso-8859-6 | Arabe (ISO) |
|
| 28597 | iso-8859-7 | Grec (ISO) |
|
| 28598 | iso-8859-8 | Hébreu (ISO-Visual) | * |
| 28599 | iso-8859-9 | Turc (ISO) |
|
| 28603 | iso-8859-13 | Estonien (ISO) |
|
| 28605 | iso-8859-15 | Latin 9 (ISO) |
|
| 29001 | x-Europa | Europe |
|
| 38598 | iso-8859-8-i | Hébreu (ISO-Logical) | * |
| 50220 | iso-2022-jp | Japonais (JIS) | * |
| 50221 | csISO2022JP | Japonais (JIS-Kana 1 octet) | * |
| 50222 | iso-2022-jp | Japonais (JIS-Kana 1 octet- SO/SI) | * |
| 50225 | iso-2022-kr | Coréen (ISO) | * |
| 50227 | x-cp50227 | Chinois simplifié (ISO-2022) | * |
| 51932 | euc-jp | Japonais (EUC) | * |
| 51936 | EUC-CN | Chinois simplifié (EUC) | * |
| 51949 | euc-kr | Coréen (EUC) | * |
| 52936 | hz-gb-2312 | Chinois simplifié (HZ) | * |
| 54936 | GB18030 | Chinois simplifié (GB18030) | * |
| 57002 | x-iscii-de | ISCII Devanagari | * |
| 57003 | x-iscii-be | ISCII Bengali | * |
| 57004 | x-iscii-ta | ISCII Tamoul | * |
| 57005 | x-iscii-te | ISCII Télougou | * |
| 57006 | x-iscii-as | ISCII Assamais | * |
| 57007 | x-iscii-or | ISCII Oriya | * |
| 57008 | x-iscii-ka | ISCII Kannada | * |
| 57009 | x-iscii-ma | ISCII Malayalam | * |
| 57010 | x-iscii-gu | ISCII Gujarati | * |
| 57011 | x-iscii-pa | ISCII Pendjabi | * |
| 65000 | utf-7 | Unicode (UTF-7) | * |
| 65001 | utf-8 | Unicode (UTF-8) | * |
| 65005 | utf-32 | Unicode (UTF-32) | * |
| 65006 | utf-32BE | Unicode (UTF-32 Big-Endian) | * |
La méthode GetByteCount détermine le nombre d'octets entraînant le codage d'un jeu de caractères Unicode, et la méthode GetBytes exécute ce codage.
De même, la méthode GetCharCount détermine le nombre de caractères entraînant le décodage d'une séquence d'octets, et la méthode GetChars procède au décodage effectif.
Si les données à convertir ne sont disponibles que sous la forme de blocs séquentiels (comme les données lues à partir d'un flux) ou si la quantité de données est si grande qu'elles doivent être divisées en blocs plus petits, utilisez Decoder ou Encoder fourni respectivement par la méthode GetDecoder ou GetEncoder d'une classe dérivée.
Les encodeurs UTF-16 et UTF-32 peuvent utiliser l'ordre d'octet avec primauté des octets de poids fort (Big-Endian) ou l'ordre d'octet avec primauté des octets de poids faible (Little-Endian). Par exemple, la majuscule latine A (U+0041) est sérialisée comme suit (au format hexadécimal) :
-
UTF-16 avec primauté des octets de poids fort : 00 41
-
UTF-16 avec primauté des octets de poids faible : 41 00
-
UTF-32 avec primauté des octets de poids fort : 00 00 00 41
-
UTF-32 avec primauté des octets de poids faible : 41 00 00 00
Le cas échéant, Encoding fournit un préambule, c'est-à-dire un tableau d'octets que vous pouvez ajouter en tant que préfixe à la séquence d'octets résultant du processus de codage. Si le préambule contient une marque d'ordre d'octet (point de code U+FEFF en Unicode), il aide le décodeur à déterminer l'ordre d'octet et le format UTF. La marque d'ordre d'octet Unicode est sérialisée comme suit (format hexadécimal) :
-
UTF-8 : EF BB BF
-
UTF-16 avec primauté des octets de poids fort : FE FF
-
UTF-16 avec primauté des octets de poids faible : FF FE
-
UTF-32 avec primauté des octets de poids fort : 00 00 FE FF
-
UTF-32 avec primauté des octets de poids faible : FF FE 00 00
Il est généralement plus efficace d'utiliser l'ordre d'octet natif pour stocker des caractères Unicode. Par exemple, il est préférable d'utiliser l'ordre d'octet avec primauté des octets de poids faible (little-endian) sur les plates-formes little-endian, comme les ordinateurs Intel.
La méthode GetPreamble retourne un tableau d'octets qui peut contenir la marque d'ordre d'octet. Si ce tableau d'octets est ajouté comme préambule à un flux de données codé, il aide le décodeur à identifier le format de codage utilisé.
Pour plus d'informations sur l'ordre d'octet et les marques d'ordre d'octet, consultez la norme Unicode à l'adresse www.unicode.org.
ExempleL'exemple de code suivant convertit une chaîne depuis un codage vers un autre.
Imports System Imports System.Text Imports Microsoft.VisualBasic Namespace Convert_Example Class MyConvertExampleClass Shared Sub Main() Dim unicodeString As String = "This string contains the unicode character Pi(" & ChrW(&H03A0) & ")" ' Create two different encodings. Dim ascii As Encoding = Encoding.ASCII Dim [unicode] As Encoding = Encoding.Unicode ' Convert the string into a byte[]. Dim unicodeBytes As Byte() = [unicode].GetBytes(unicodeString) ' Perform the conversion from one encoding to the other. Dim asciiBytes As Byte() = Encoding.Convert([unicode], ascii, unicodeBytes) ' Convert the new byte[] into a char[] and then into a string. ' This is a slightly different approach to converting to illustrate ' the use of GetCharCount/GetChars. Dim asciiChars(ascii.GetCharCount(asciiBytes, 0, asciiBytes.Length)) As Char ascii.GetChars(asciiBytes, 0, asciiBytes.Length, asciiChars, 0) Dim asciiString As New String(asciiChars) ' Display the strings created before and after the conversion. Console.WriteLine("Original string: {0}", unicodeString) Console.WriteLine("Ascii converted string: {0}", asciiString) End Sub End Class End Namespace
using System; using System.Text; namespace ConvertExample { class ConvertExampleClass { static void Main() { string unicodeString = "This string contains the unicode character Pi(\u03a0)"; // Create two different encodings. Encoding ascii = Encoding.ASCII; Encoding unicode = Encoding.Unicode; // Convert the string into a byte[]. byte[] unicodeBytes = unicode.GetBytes(unicodeString); // Perform the conversion from one encoding to the other. byte[] asciiBytes = Encoding.Convert(unicode, ascii, unicodeBytes); // Convert the new byte[] into a char[] and then into a string. // This is a slightly different approach to converting to illustrate // the use of GetCharCount/GetChars. char[] asciiChars = new char[ascii.GetCharCount(asciiBytes, 0, asciiBytes.Length)]; ascii.GetChars(asciiBytes, 0, asciiBytes.Length, asciiChars, 0); string asciiString = new string(asciiChars); // Display the strings created before and after the conversion. Console.WriteLine("Original string: {0}", unicodeString); Console.WriteLine("Ascii converted string: {0}", asciiString); } } }
using namespace System; using namespace System::Text; int main() { String^ unicodeString = "This string contains the unicode character Pi(\u03a0)"; // Create two different encodings. Encoding^ ascii = Encoding::ASCII; Encoding^ unicode = Encoding::Unicode; // Convert the string into a Byte->Item[]. array<Byte>^unicodeBytes = unicode->GetBytes( unicodeString ); // Perform the conversion from one encoding to the other. array<Byte>^asciiBytes = Encoding::Convert( unicode, ascii, unicodeBytes ); // Convert the new Byte into[] a char and[] then into a string. // This is a slightly different approach to converting to illustrate // the use of GetCharCount/GetChars. array<Char>^asciiChars = gcnew array<Char>(ascii->GetCharCount( asciiBytes, 0, asciiBytes->Length )); ascii->GetChars( asciiBytes, 0, asciiBytes->Length, asciiChars, 0 ); String^ asciiString = gcnew String( asciiChars ); // Display the strings created before and after the conversion. Console::WriteLine( "Original String*: {0}", unicodeString ); Console::WriteLine( "Ascii converted String*: {0}", asciiString ); }
package ConvertExample; import System.*; import System.Text.*; class ConvertExampleClass { public static void main(String[] args) { String unicodeString = "This string contains the unicode character Pi(\u03a0)"; // Create two different encodings. Encoding ascii = Encoding.get_ASCII(); Encoding unicode = Encoding.get_Unicode(); // Convert the string into a byte[]. ubyte unicodeBytes[] = unicode.GetBytes(unicodeString); // Perform the conversion from one encoding to the other. ubyte asciiBytes[] = Encoding.Convert(unicode, ascii, unicodeBytes); // Convert the new byte[] into a char[] and then into a string. // This is a slightly different approach to converting to illustrate // the use of GetCharCount/GetChars. char asciiChars[] = new char[ascii.GetCharCount(asciiBytes, 0, asciiBytes.length)]; ascii.GetChars(asciiBytes, 0, asciiBytes.length, asciiChars, 0); String asciiString = new String(asciiChars); // Display the strings created before and after the conversion. Console.WriteLine("Original string: {0}", unicodeString); Console.WriteLine("Ascii converted string: {0}", asciiString); } //main } //ConvertExampleClass
Sécurité des threads
Plates-formesWindows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile pour Pocket PC, Windows Mobile pour Smartphone, Windows Server 2003, Windows XP Édition Media Center, Windows XP Professionnel Édition x64, Windows XP SP2, Windows XP Starter Edition
Le .NET Framework ne prend pas en charge toutes les versions de chaque plate-forme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise.
Informations de version
Outils (masquer)
S'enregistrer
Liste des Membres
Qui est en ligne?
FAQ