Encoding.GetEncoding Méthode

Définition

Retourne un encodage pour la page de codes spécifiée.

Surcharges

GetEncoding(Int32)

Retourne l'encodage associé à l'identificateur de page de codes spécifié.

GetEncoding(String)

Retourne l'encodage associé au nom de la page de codes spécifiée.

GetEncoding(Int32, EncoderFallback, DecoderFallback)

Retourne l'encodage associé à l'identificateur de page de codes spécifié. Les paramètres spécifient un gestionnaire d'erreurs pour les caractères qui ne peuvent pas être encodés et pour les séquences d'octets qui ne peuvent pas être décodées.

GetEncoding(String, EncoderFallback, DecoderFallback)

Retourne l'encodage associé au nom de la page de codes spécifiée. Les paramètres spécifient un gestionnaire d'erreurs pour les caractères qui ne peuvent pas être encodés et pour les séquences d'octets qui ne peuvent pas être décodées.

GetEncoding(Int32)

Retourne l'encodage associé à l'identificateur de page de codes spécifié.

public:
 static System::Text::Encoding ^ GetEncoding(int codepage);
public static System.Text.Encoding GetEncoding (int codepage);
static member GetEncoding : int -> System.Text.Encoding
Public Shared Function GetEncoding (codepage As Integer) As Encoding

Paramètres

codepage
Int32

Identificateur de la page de codes de l'encodage préféré. Pour obtenir la liste des valeurs possibles, consultez Encoding.

- ou -

0 (zéro) pour utiliser l'encodage par défaut.

Retours

Encodage associé à la page de codes spécifiée.

Exceptions

codepage est inférieur à 0 ou supérieur à 65535.

codepage n'est pas pris en charge par la plateforme sous-jacente.

codepage n'est pas pris en charge par la plateforme sous-jacente.

Exemples

L’exemple suivant obtient deux instances du même encodage (une par page de codes et une autre par nom) et vérifie leur égalité.

using namespace System;
using namespace System::Text;
int main()
{
   
   // Get a UTF-32 encoding by codepage.
   Encoding^ e1 = Encoding::GetEncoding( 12000 );
   
   // Get a UTF-32 encoding by name.
   Encoding^ e2 = Encoding::GetEncoding( "utf-32" );
   
   // Check their equality.
   Console::WriteLine( "e1 equals e2? {0}", e1->Equals( e2 ) );
}

/* 
This code produces the following output.

e1 equals e2? True

*/
using System;
using System.Text;

public class SamplesEncoding  {

   public static void Main()  {

      // Get a UTF-32 encoding by codepage.
      Encoding e1 = Encoding.GetEncoding( 12000 );

      // Get a UTF-32 encoding by name.
      Encoding e2 = Encoding.GetEncoding( "utf-32" );

      // Check their equality.
      Console.WriteLine( "e1 equals e2? {0}", e1.Equals( e2 ) );
   }
}


/* 
This code produces the following output.

e1 equals e2? True

*/
Imports System.Text

Public Class SamplesEncoding   

   Public Shared Sub Main()

      ' Get a UTF-32 encoding by codepage.
      Dim e1 As Encoding = Encoding.GetEncoding(12000)

      ' Get a UTF-32 encoding by name.
      Dim e2 As Encoding = Encoding.GetEncoding("utf-32")

      ' Check their equality.
      Console.WriteLine("e1 equals e2? {0}", e1.Equals(e2))

   End Sub

End Class


'This code produces the following output.
'
'e1 equals e2? True

Remarques

Le gestionnaire de secours dépend du type d’encodage de codepage . Si codepage est une page de codes ou un encodage de jeu de caractères codés sur deux octets (DBCS), un gestionnaire de secours le mieux adapté est utilisé. Dans le cas contraire, un gestionnaire de secours de remplacement est utilisé. Ces gestionnaires de secours peuvent ne pas convenir à votre application. Pour spécifier le gestionnaire de secours utilisé par l’encodage spécifié par codepage , vous pouvez appeler la GetEncoding(Int32, EncoderFallback, DecoderFallback) surcharge.

Dans .NET Framework, la GetEncoding méthode s’appuie sur la plateforme sous-jacente pour prendre en charge la plupart des pages de codes. Toutefois, .NET Framework prend en charge en mode natif certains encodages. Pour obtenir la liste des pages de codes, consultez liste des encodages. Dans .NET Core, la GetEncoding méthode retourne les encodages pris en charge en mode natif par .net core. Sur les deux implémentations .NET, vous pouvez appeler la GetEncodings méthode pour obtenir un tableau d' EncodingInfo objets qui contient des informations sur tous les encodages disponibles.

En plus des encodages qui sont disponibles en mode natif sur .NET Core ou qui sont pris en charge intrinsèquement sur une version de plateforme spécifique de .NET Framework, la GetEncoding méthode retourne tous les encodages supplémentaires rendus disponibles en inscrivant un EncodingProvider objet. Si le même encodage a été inscrit par plusieurs EncodingProvider objets, cette méthode retourne le dernier inscrit.

Vous pouvez également attribuer la valeur 0 à l' codepage argument. Son comportement précis varie selon que des encodages ont été rendus disponibles en inscrivant un EncodingProvider objet :

  • Si un ou plusieurs fournisseurs d’encodage ont été inscrits, il retourne l’encodage du dernier fournisseur inscrit qui a choisi de retourner un encodage lorsque la GetEncoding méthode reçoit un codepage argument de 0.

  • Sur .NET Framework, si aucun fournisseur d’encodage n’a été inscrit, si CodePagesEncodingProvider est le fournisseur d’encodage inscrit, ou si aucun fournisseur d’encodage n’est géré avec la codepage valeur 0, il retourne la page de codes active du système d’exploitation. Pour déterminer la page de codes active sur les systèmes Windows, appelez la fonction Windows GetACP à partir de .NET Framework.

  • Sur .NET Core, si aucun fournisseur d’encodage n’a été inscrit ou si aucun fournisseur d’encodage inscrit ne gère une codepage valeur de 0, il retourne UTF8Encoding .

Notes

  • Certaines pages de codes non prises en charge provoquent ArgumentException la levée d’une, tandis que d’autres provoquent une exception NotSupportedException . Par conséquent, votre code doit intercepter toutes les exceptions indiquées dans la section exceptions.
  • Dans .NET 5 et versions ultérieures, l’identificateur 65000de page de codes , qui représente UTF-7, n’est pas pris en charge.

Notes

Les pages de codes ANSI peuvent être différentes sur des ordinateurs différents et peuvent changer sur un seul ordinateur, ce qui entraîne une altération des données. Pour cette raison, si la page de codes active est une page de codes ANSI, l’encodage et le décodage des données à l’aide de la page de codes par défaut retournée par Encoding.GetEncoding(0) n’est pas recommandé. Pour obtenir les résultats les plus cohérents, vous devez utiliser un encodage Unicode, tel que UTF-8 (page de codes 65001) ou UTF-16, au lieu d’une page de codes spécifique.

GetEncodingretourne une instance mise en cache avec les paramètres par défaut. Vous devez utiliser les constructeurs de classes dérivées pour récupérer une instance avec des paramètres différents. Par exemple, la UTF32Encoding classe fournit un constructeur qui vous permet d’activer la détection d’erreurs.

Voir aussi

S’applique à

GetEncoding(String)

Retourne l'encodage associé au nom de la page de codes spécifiée.

public:
 static System::Text::Encoding ^ GetEncoding(System::String ^ name);
public static System.Text.Encoding GetEncoding (string name);
static member GetEncoding : string -> System.Text.Encoding
Public Shared Function GetEncoding (name As String) As Encoding

Paramètres

name
String

Nom de la page de codes de l'encodage préféré. Toute valeur retournée par la propriété WebName est valide. Pour obtenir la liste des valeurs possibles, consultez Encoding.

Retours

Encodage associé à la page de codes spécifiée.

Exceptions

name n'est pas un nom de page de codes valide.

- ou -

La page de codes indiquée par name n'est pas prise en charge par la plateforme sous-jacente.

Exemples

L’exemple suivant obtient deux instances du même encodage (une par page de codes et une autre par nom) et vérifie leur égalité.

using namespace System;
using namespace System::Text;
int main()
{
   
   // Get a UTF-32 encoding by codepage.
   Encoding^ e1 = Encoding::GetEncoding( 12000 );
   
   // Get a UTF-32 encoding by name.
   Encoding^ e2 = Encoding::GetEncoding( "utf-32" );
   
   // Check their equality.
   Console::WriteLine( "e1 equals e2? {0}", e1->Equals( e2 ) );
}

/* 
This code produces the following output.

e1 equals e2? True

*/
using System;
using System.Text;

public class SamplesEncoding  {

   public static void Main()  {

      // Get a UTF-32 encoding by codepage.
      Encoding e1 = Encoding.GetEncoding( 12000 );

      // Get a UTF-32 encoding by name.
      Encoding e2 = Encoding.GetEncoding( "utf-32" );

      // Check their equality.
      Console.WriteLine( "e1 equals e2? {0}", e1.Equals( e2 ) );
   }
}


/* 
This code produces the following output.

e1 equals e2? True

*/
Imports System.Text

Public Class SamplesEncoding   

   Public Shared Sub Main()

      ' Get a UTF-32 encoding by codepage.
      Dim e1 As Encoding = Encoding.GetEncoding(12000)

      ' Get a UTF-32 encoding by name.
      Dim e2 As Encoding = Encoding.GetEncoding("utf-32")

      ' Check their equality.
      Console.WriteLine("e1 equals e2? {0}", e1.Equals(e2))

   End Sub

End Class


'This code produces the following output.
'
'e1 equals e2? True

Remarques

Le gestionnaire de secours dépend du type d’encodage de name . Si name est une page de codes ou un encodage de jeu de caractères codés sur deux octets (DBCS), un gestionnaire de secours le mieux adapté est utilisé. Dans le cas contraire, un gestionnaire de secours de remplacement est utilisé. Ces gestionnaires de secours peuvent ne pas convenir à votre application. Pour spécifier le gestionnaire de secours utilisé par l’encodage spécifié par name , vous pouvez appeler la GetEncoding(String, EncoderFallback, DecoderFallback) surcharge.

Dans .NET Framework, la GetEncoding méthode s’appuie sur la plateforme sous-jacente pour prendre en charge la plupart des pages de codes. Toutefois, .NET Framework prend en charge en mode natif certains encodages. Pour obtenir la liste des pages de codes, consultez liste des encodages. Dans .NET Core, la GetEncoding méthode retourne les encodages pris en charge en mode natif par .net core. Sur les deux implémentations .NET, vous pouvez appeler la GetEncodings méthode pour obtenir un tableau d' EncodingInfo objets qui contient des informations sur tous les encodages disponibles.

En plus des encodages qui sont disponibles en mode natif sur .NET Core ou qui sont pris en charge intrinsèquement sur une version de plateforme spécifique de .NET Framework, la GetEncoding méthode retourne tous les encodages supplémentaires rendus disponibles en inscrivant un EncodingProvider objet. Si le même encodage a été inscrit par plusieurs EncodingProvider objets, cette méthode retourne le dernier inscrit.

Dans .NET 5 et versions ultérieures, le nom utf-7 de la page de codes n’est pas pris en charge.

Notes

Les pages de codes ANSI peuvent être différentes sur des ordinateurs différents, ou elles peuvent être modifiées pour un seul ordinateur, ce qui entraîne une altération des données. Pour obtenir les résultats les plus cohérents, utilisez Unicode, par exemple UTF-8 (page de codes 65001) ou UTF-16, au lieu d’une page de codes spécifique.

GetEncodingretourne une instance mise en cache avec les paramètres par défaut. Vous devez utiliser les constructeurs de classes dérivées pour récupérer une instance avec des paramètres différents. Par exemple, la UTF32Encoding classe fournit un constructeur qui vous permet d’activer la détection d’erreurs.

Voir aussi

S’applique à

GetEncoding(Int32, EncoderFallback, DecoderFallback)

Retourne l'encodage associé à l'identificateur de page de codes spécifié. Les paramètres spécifient un gestionnaire d'erreurs pour les caractères qui ne peuvent pas être encodés et pour les séquences d'octets qui ne peuvent pas être décodées.

public:
 static System::Text::Encoding ^ GetEncoding(int codepage, System::Text::EncoderFallback ^ encoderFallback, System::Text::DecoderFallback ^ decoderFallback);
public static System.Text.Encoding GetEncoding (int codepage, System.Text.EncoderFallback encoderFallback, System.Text.DecoderFallback decoderFallback);
static member GetEncoding : int * System.Text.EncoderFallback * System.Text.DecoderFallback -> System.Text.Encoding
Public Shared Function GetEncoding (codepage As Integer, encoderFallback As EncoderFallback, decoderFallback As DecoderFallback) As Encoding

Paramètres

codepage
Int32

Identificateur de la page de codes de l'encodage préféré. Pour obtenir la liste des valeurs possibles, consultez Encoding.

- ou -

0 (zéro) pour utiliser l'encodage par défaut.

encoderFallback
EncoderFallback

Objet qui fournit une procédure de gestion d'erreurs quand un caractère ne peut pas être encodé avec l'encodage actuel.

decoderFallback
DecoderFallback

Objet qui fournit une procédure de gestion d'erreurs quand une séquence d'octets ne peut pas être décodée avec l'encodage actuel.

Retours

Encodage associé à la page de codes spécifiée.

Exceptions

codepage est inférieur à 0 ou supérieur à 65535.

codepage n'est pas pris en charge par la plateforme sous-jacente.

codepage n'est pas pris en charge par la plateforme sous-jacente.

Exemples

L’exemple suivant illustre la Encoding.GetEncoding(String, EncoderFallback, DecoderFallback) méthode.

// This example demonstrates the EncoderReplacementFallback class.

using namespace System;
using namespace System::Text;

int main()
{
    // Create an encoding, which is equivalent to calling the
    // ASCIIEncoding class constructor.
    // The EncoderReplacementFallback parameter specifies that the
    // string, "(unknown)", replace characters that cannot be encoded.
    // A decoder replacement fallback is also specified, but in this
    // code example the decoding operation cannot fail.

    Encoding^ ascii = Encoding::GetEncoding("us-ascii",
        gcnew EncoderReplacementFallback("(unknown)"),
        gcnew DecoderReplacementFallback("(error)"));

    // The input string consists of the Unicode characters LEFT POINTING
    // DOUBLE ANGLE QUOTATION MARK (U+00AB), 'X' (U+0058), and RIGHT
    // POINTING DOUBLE ANGLE QUOTATION MARK (U+00BB).
    // The encoding can only encode characters in the US-ASCII range of
    // U+0000 through U+007F. Consequently, the characters bracketing the
    // 'X' character are replaced with the fallback replacement string,
    // "(unknown)".

    String^ inputString = "\u00abX\u00bb";
    String^ decodedString;
    String^ twoNewLines = Environment::NewLine + Environment::NewLine;
    array <Byte>^ encodedBytes = 
        gcnew array<Byte>(ascii->GetByteCount(inputString));
    int numberOfEncodedBytes = 0;

    // ---------------------------------------------------------------------
        // Display the name of the encoding.
    Console::WriteLine("The name of the encoding is \"{0}\".{1}", 
        ascii->WebName, Environment::NewLine);

    // Display the input string in text.
    Console::WriteLine("Input string ({0} characters): \"{1}\"",
        inputString->Length, inputString);

    // Display the input string in hexadecimal.
    Console::Write("Input string in hexadecimal: ");
    for each (char c in inputString)
    {
        Console::Write("0x{0:X2} ", c);
    }
    Console::Write(twoNewLines);

    // ---------------------------------------------------------------------
    // Encode the input string.

    Console::WriteLine("Encode the input string...");
    numberOfEncodedBytes = ascii->GetBytes(inputString, 0, inputString->Length,
        encodedBytes, 0);

    // Display the encoded bytes.
    Console::WriteLine("Encoded bytes in hexadecimal ({0} bytes):{1}",
        numberOfEncodedBytes, Environment::NewLine);
    for(int i = 0; i < encodedBytes->Length; i++)
    {
        Console::Write("0x{0:X2} ", encodedBytes[i]);
        if(((i + 1) % 6) == 0)
        {
            Console::WriteLine();
        }
    }
    Console::Write(twoNewLines);

    // ---------------------------------------------------------------------
    // Decode the encoded bytes, yielding a reconstituted string.

    Console::WriteLine("Decode the encoded bytes...");
    decodedString = ascii->GetString(encodedBytes);

    // Display the input string and the decoded string for comparison.
    Console::WriteLine("Input string:  \"{0}\"", inputString);
    Console::WriteLine("Decoded string:\"{0}\"", decodedString);
}



/*
This code example produces the following results:

The name of the encoding is "us-ascii".

Input string (3 characters): "X"
Input string in hexadecimal: 0xAB 0x58 0xBB

Encode the input string...
Encoded bytes in hexadecimal (19 bytes):

0x28 0x75 0x6E 0x6B 0x6E 0x6F
0x77 0x6E 0x29 0x58 0x28 0x75
0x6E 0x6B 0x6E 0x6F 0x77 0x6E
0x29

Decode the encoded bytes...
Input string:  "X"
Decoded string:"(unknown)X(unknown)"

*/
// This example demonstrates the EncoderReplacementFallback class.

using System;
using System.Text;

class Sample
{
    public static void Main()
    {

// Create an encoding, which is equivalent to calling the
// ASCIIEncoding class constructor.
// The EncoderReplacementFallback parameter specifies that the
// string, "(unknown)", replace characters that cannot be encoded.
// A decoder replacement fallback is also specified, but in this
// code example the decoding operation cannot fail.

    Encoding ae = Encoding.GetEncoding(
                  "us-ascii",
                  new EncoderReplacementFallback("(unknown)"),
                  new DecoderReplacementFallback("(error)"));

// The input string consists of the Unicode characters LEFT POINTING
// DOUBLE ANGLE QUOTATION MARK (U+00AB), 'X' (U+0058), and RIGHT POINTING
// DOUBLE ANGLE QUOTATION MARK (U+00BB).
// The encoding can only encode characters in the US-ASCII range of U+0000
// through U+007F. Consequently, the characters bracketing the 'X' character
// are replaced with the fallback replacement string, "(unknown)".

    string inputString = "\u00abX\u00bb";
    string decodedString;
    string twoNewLines = "\n\n";
    byte[] encodedBytes = new byte[ae.GetByteCount(inputString)];
    int numberOfEncodedBytes = 0;
    int ix = 0;

// --------------------------------------------------------------------------
// Display the name of the encoding.
    Console.WriteLine("The name of the encoding is \"{0}\".\n", ae.WebName);

// Display the input string in text.
    Console.WriteLine("Input string ({0} characters): \"{1}\"",
                       inputString.Length, inputString);

// Display the input string in hexadecimal.
    Console.Write("Input string in hexadecimal: ");
    foreach (char c in inputString.ToCharArray())
        {
        Console.Write("0x{0:X2} ", (int)c);
        }
    Console.Write(twoNewLines);

// --------------------------------------------------------------------------
// Encode the input string.

    Console.WriteLine("Encode the input string...");
    numberOfEncodedBytes = ae.GetBytes(inputString, 0, inputString.Length,
                                       encodedBytes, 0);

// Display the encoded bytes.
    Console.WriteLine("Encoded bytes in hexadecimal ({0} bytes):\n",
                       numberOfEncodedBytes);
    ix = 0;
    foreach (byte b in encodedBytes)
        {
        Console.Write("0x{0:X2} ", (int)b);
        ix++;
        if (0 == ix % 6) Console.WriteLine();
        }
    Console.Write(twoNewLines);

// --------------------------------------------------------------------------
// Decode the encoded bytes, yielding a reconstituted string.

    Console.WriteLine("Decode the encoded bytes...");
    decodedString = ae.GetString(encodedBytes);

// Display the input string and the decoded string for comparison.
    Console.WriteLine("Input string:  \"{0}\"", inputString);
    Console.WriteLine("Decoded string:\"{0}\"", decodedString);
    }
}
/*
This code example produces the following results:

The name of the encoding is "us-ascii".

Input string (3 characters): "«X»"
Input string in hexadecimal: 0xAB 0x58 0xBB

Encode the input string...
Encoded bytes in hexadecimal (19 bytes):

0x28 0x75 0x6E 0x6B 0x6E 0x6F
0x77 0x6E 0x29 0x58 0x28 0x75
0x6E 0x6B 0x6E 0x6F 0x77 0x6E
0x29

Decode the encoded bytes...
Input string:  "«X»"
Decoded string:"(unknown)X(unknown)"

*/
' This example demonstrates the EncoderReplacementFallback class.
Imports System.Text

Class Sample
    Public Shared Sub Main() 
        
        ' Create an encoding, which is equivalent to calling the 
        ' ASCIIEncoding class constructor. 
        ' The EncoderReplacementFallback parameter specifies that the 
        ' string, "(unknown)", replace characters that cannot be encoded. 
        ' A decoder replacement fallback is also specified, but in this 
        ' code example the decoding operation cannot fail.  

        Dim erf As New EncoderReplacementFallback("(unknown)")
        Dim drf As New DecoderReplacementFallback("(error)")
        Dim ae As Encoding = Encoding.GetEncoding("us-ascii", erf, drf)
        
        ' The input string consists of the Unicode characters LEFT POINTING 
        ' DOUBLE ANGLE QUOTATION MARK (U+00AB), 'X' (U+0058), and RIGHT POINTING 
        ' DOUBLE ANGLE QUOTATION MARK (U+00BB). 
        ' The encoding can only encode characters in the US-ASCII range of U+0000 
        ' through U+007F. Consequently, the characters bracketing the 'X' character
        ' are replaced with the fallback replacement string, "(unknown)".

        Dim inputString As String = "«X»"
        Dim decodedString As String
        Dim twoNewLines As String = vbCrLf & vbCrLf
        Dim ix As Integer = 0
        Dim numberOfEncodedBytes As Integer = ae.GetByteCount(inputString)
        ' Counteract the compiler adding an extra byte to the array.
        Dim encodedBytes(numberOfEncodedBytes - 1) As Byte
        
        ' --------------------------------------------------------------------------
        ' Display the name of the encoding.
        Console.WriteLine("The name of the encoding is ""{0}""." & vbCrLf, ae.WebName)
        
        ' Display the input string in text.
        Console.WriteLine("Input string ({0} characters): ""{1}""", _
                           inputString.Length, inputString)
        
        ' Display the input string in hexadecimal. 
        ' Each element is converted to an integer with Convert.ToInt32.
        Console.Write("Input string in hexadecimal: ")
        Dim c As Char
        For Each c In inputString.ToCharArray()
            Console.Write("0x{0:X2} ", Convert.ToInt32(c))
        Next c
        Console.Write(twoNewLines)
        
        ' --------------------------------------------------------------------------
        ' Encode the input string. 
        Console.WriteLine("Encode the input string...")
        numberOfEncodedBytes = ae.GetBytes(inputString, 0, inputString.Length, _
                                           encodedBytes, 0)
        
        ' Display the encoded bytes. 
        ' Each element is converted to an integer with Convert.ToInt32.
        Console.WriteLine("Encoded bytes in hexadecimal ({0} bytes):" & vbCrLf, _
                           numberOfEncodedBytes)
        ix = 0
        Dim b As Byte
        For Each b In encodedBytes
            Console.Write("0x{0:X2} ", Convert.ToInt32(b))
            ix += 1
            If 0 = ix Mod 6 Then
                Console.WriteLine()
            End If
        Next b
        Console.Write(twoNewLines)
        
        ' --------------------------------------------------------------------------
        ' Decode the encoded bytes, yielding a reconstituted string.
        Console.WriteLine("Decode the encoded bytes...")
        decodedString = ae.GetString(encodedBytes)
        
        ' Display the input string and the decoded string for comparison.
        Console.WriteLine("Input string:  ""{0}""", inputString)
        Console.WriteLine("Decoded string:""{0}""", decodedString)
    
    End Sub
End Class
'
'This code example produces the following results:
'
'The name of the encoding is "us-ascii".
'
'Input string (3 characters): "X"
'Input string in hexadecimal: 0xAB 0x58 0xBB
'
'Encode the input string...
'Encoded bytes in hexadecimal (19 bytes):
'
'0x28 0x75 0x6E 0x6B 0x6E 0x6F
'0x77 0x6E 0x29 0x58 0x28 0x75
'0x6E 0x6B 0x6E 0x6F 0x77 0x6E
'0x29
'
'Decode the encoded bytes...
'Input string:  "X"
'Decoded string:"(unknown)X(unknown)"
'

Remarques

Notes

  • Certaines pages de codes non prises en charge provoquent la ArgumentException levée de l’exception, tandis que d’autres causent NotSupportedException . Par conséquent, votre code doit intercepter toutes les exceptions indiquées dans la section exceptions.
  • Dans .NET 5 et versions ultérieures, l’identificateur 65000de page de codes , qui représente UTF-7, n’est pas pris en charge.

Dans .NET Framework, la GetEncoding méthode s’appuie sur la plateforme sous-jacente pour prendre en charge la plupart des pages de codes. Toutefois, .NET Framework prend en charge en mode natif certains encodages. Pour obtenir la liste des pages de codes, consultez liste des encodages. Dans .NET Core, la GetEncoding méthode retourne les encodages pris en charge en mode natif par .net core. Sur les deux implémentations .NET, vous pouvez appeler la GetEncodings méthode pour obtenir un tableau d' EncodingInfo objets qui contient des informations sur tous les encodages disponibles.

En plus des encodages qui sont disponibles en mode natif sur .NET Core ou qui sont pris en charge intrinsèquement sur une version de plateforme spécifique de .NET Framework, la GetEncoding méthode retourne tous les encodages supplémentaires rendus disponibles en inscrivant un EncodingProvider objet. Si le même encodage a été inscrit par plusieurs EncodingProvider objets, cette méthode retourne le dernier inscrit.

Vous pouvez également attribuer la valeur 0 à l' codepage argument. Son comportement précis varie selon que des encodages ont été rendus disponibles en inscrivant un EncodingProvider objet :

  • Si un ou plusieurs fournisseurs d’encodage ont été inscrits, il retourne l’encodage du dernier fournisseur inscrit qui a choisi de retourner un encodage lorsque la GetEncoding méthode reçoit un codepage argument de 0.

  • Sur .NET Framework, si aucun fournisseur d’encodage n’a été inscrit, si CodePagesEncodingProvider est le fournisseur d’encodage inscrit, ou si aucun fournisseur d’encodage n’est géré avec la codepage valeur 0, la page de codes active est retournée.

  • Sur .NET Core, si aucun fournisseur d’encodage n’a été inscrit ou si aucun fournisseur d’encodage n’a pris codepage en charge la valeur 0, il retourne l' UTF8Encoding encodage.

Notes

Les pages de codes ANSI peuvent être différentes sur des ordinateurs différents et peuvent changer sur un seul ordinateur, ce qui entraîne une altération des données. Pour cette raison, si la page de codes active est une page de codes ANSI, l’encodage et le décodage des données à l’aide de la page de codes par défaut retournée par Encoding.GetEncoding(0) n’est pas recommandé. Pour obtenir les résultats les plus cohérents, vous devez utiliser Unicode, par exemple UTF-8 (page de codes 65001) ou UTF-16, au lieu d’une page de codes spécifique.

Pour obtenir l’encodage associé à la page de codes active, vous pouvez fournir la valeur 0 pour l’argument codepage ou, si votre code s’exécute sur .NET Framework, récupérer la valeur de la Encoding.Default propriété. Pour déterminer la page de codes active actuelle, appelez la fonction Windows GetACP à partir de .NET Framework.

GetEncodingretourne une instance mise en cache avec les paramètres par défaut. Vous devez utiliser les constructeurs de classes dérivées pour récupérer une instance avec des paramètres différents. Par exemple, la UTF32Encoding classe fournit un constructeur qui vous permet d’activer la détection d’erreurs.

Voir aussi

S’applique à

GetEncoding(String, EncoderFallback, DecoderFallback)

Retourne l'encodage associé au nom de la page de codes spécifiée. Les paramètres spécifient un gestionnaire d'erreurs pour les caractères qui ne peuvent pas être encodés et pour les séquences d'octets qui ne peuvent pas être décodées.

public:
 static System::Text::Encoding ^ GetEncoding(System::String ^ name, System::Text::EncoderFallback ^ encoderFallback, System::Text::DecoderFallback ^ decoderFallback);
public static System.Text.Encoding GetEncoding (string name, System.Text.EncoderFallback encoderFallback, System.Text.DecoderFallback decoderFallback);
static member GetEncoding : string * System.Text.EncoderFallback * System.Text.DecoderFallback -> System.Text.Encoding
Public Shared Function GetEncoding (name As String, encoderFallback As EncoderFallback, decoderFallback As DecoderFallback) As Encoding

Paramètres

name
String

Nom de la page de codes de l'encodage préféré. Toute valeur retournée par la propriété WebName est valide. Les valeurs possibles apparaissent dans la colonne Nom de la table qui s'affiche dans la rubrique de la classe Encoding.

encoderFallback
EncoderFallback

Objet qui fournit une procédure de gestion d'erreurs quand un caractère ne peut pas être encodé avec l'encodage actuel.

decoderFallback
DecoderFallback

Objet qui fournit une procédure de gestion d'erreurs quand une séquence d'octets ne peut pas être décodée avec l'encodage actuel.

Retours

Encodage associé à la page de codes spécifiée.

Exceptions

name n'est pas un nom de page de codes valide.

- ou -

La page de codes indiquée par name n'est pas prise en charge par la plateforme sous-jacente.

Exemples

L’exemple suivant illustre la Encoding.GetEncoding(String, EncoderFallback, DecoderFallback) méthode.

// This example demonstrates the EncoderReplacementFallback class.

using namespace System;
using namespace System::Text;

int main()
{
    // Create an encoding, which is equivalent to calling the
    // ASCIIEncoding class constructor.
    // The EncoderReplacementFallback parameter specifies that the
    // string, "(unknown)", replace characters that cannot be encoded.
    // A decoder replacement fallback is also specified, but in this
    // code example the decoding operation cannot fail.

    Encoding^ ascii = Encoding::GetEncoding("us-ascii",
        gcnew EncoderReplacementFallback("(unknown)"),
        gcnew DecoderReplacementFallback("(error)"));

    // The input string consists of the Unicode characters LEFT POINTING
    // DOUBLE ANGLE QUOTATION MARK (U+00AB), 'X' (U+0058), and RIGHT
    // POINTING DOUBLE ANGLE QUOTATION MARK (U+00BB).
    // The encoding can only encode characters in the US-ASCII range of
    // U+0000 through U+007F. Consequently, the characters bracketing the
    // 'X' character are replaced with the fallback replacement string,
    // "(unknown)".

    String^ inputString = "\u00abX\u00bb";
    String^ decodedString;
    String^ twoNewLines = Environment::NewLine + Environment::NewLine;
    array <Byte>^ encodedBytes = 
        gcnew array<Byte>(ascii->GetByteCount(inputString));
    int numberOfEncodedBytes = 0;

    // ---------------------------------------------------------------------
        // Display the name of the encoding.
    Console::WriteLine("The name of the encoding is \"{0}\".{1}", 
        ascii->WebName, Environment::NewLine);

    // Display the input string in text.
    Console::WriteLine("Input string ({0} characters): \"{1}\"",
        inputString->Length, inputString);

    // Display the input string in hexadecimal.
    Console::Write("Input string in hexadecimal: ");
    for each (char c in inputString)
    {
        Console::Write("0x{0:X2} ", c);
    }
    Console::Write(twoNewLines);

    // ---------------------------------------------------------------------
    // Encode the input string.

    Console::WriteLine("Encode the input string...");
    numberOfEncodedBytes = ascii->GetBytes(inputString, 0, inputString->Length,
        encodedBytes, 0);

    // Display the encoded bytes.
    Console::WriteLine("Encoded bytes in hexadecimal ({0} bytes):{1}",
        numberOfEncodedBytes, Environment::NewLine);
    for(int i = 0; i < encodedBytes->Length; i++)
    {
        Console::Write("0x{0:X2} ", encodedBytes[i]);
        if(((i + 1) % 6) == 0)
        {
            Console::WriteLine();
        }
    }
    Console::Write(twoNewLines);

    // ---------------------------------------------------------------------
    // Decode the encoded bytes, yielding a reconstituted string.

    Console::WriteLine("Decode the encoded bytes...");
    decodedString = ascii->GetString(encodedBytes);

    // Display the input string and the decoded string for comparison.
    Console::WriteLine("Input string:  \"{0}\"", inputString);
    Console::WriteLine("Decoded string:\"{0}\"", decodedString);
}



/*
This code example produces the following results:

The name of the encoding is "us-ascii".

Input string (3 characters): "X"
Input string in hexadecimal: 0xAB 0x58 0xBB

Encode the input string...
Encoded bytes in hexadecimal (19 bytes):

0x28 0x75 0x6E 0x6B 0x6E 0x6F
0x77 0x6E 0x29 0x58 0x28 0x75
0x6E 0x6B 0x6E 0x6F 0x77 0x6E
0x29

Decode the encoded bytes...
Input string:  "X"
Decoded string:"(unknown)X(unknown)"

*/
// This example demonstrates the EncoderReplacementFallback class.

using System;
using System.Text;

class Sample
{
    public static void Main()
    {

// Create an encoding, which is equivalent to calling the
// ASCIIEncoding class constructor.
// The EncoderReplacementFallback parameter specifies that the
// string, "(unknown)", replace characters that cannot be encoded.
// A decoder replacement fallback is also specified, but in this
// code example the decoding operation cannot fail.

    Encoding ae = Encoding.GetEncoding(
                  "us-ascii",
                  new EncoderReplacementFallback("(unknown)"),
                  new DecoderReplacementFallback("(error)"));

// The input string consists of the Unicode characters LEFT POINTING
// DOUBLE ANGLE QUOTATION MARK (U+00AB), 'X' (U+0058), and RIGHT POINTING
// DOUBLE ANGLE QUOTATION MARK (U+00BB).
// The encoding can only encode characters in the US-ASCII range of U+0000
// through U+007F. Consequently, the characters bracketing the 'X' character
// are replaced with the fallback replacement string, "(unknown)".

    string inputString = "\u00abX\u00bb";
    string decodedString;
    string twoNewLines = "\n\n";
    byte[] encodedBytes = new byte[ae.GetByteCount(inputString)];
    int numberOfEncodedBytes = 0;
    int ix = 0;

// --------------------------------------------------------------------------
// Display the name of the encoding.
    Console.WriteLine("The name of the encoding is \"{0}\".\n", ae.WebName);

// Display the input string in text.
    Console.WriteLine("Input string ({0} characters): \"{1}\"",
                       inputString.Length, inputString);

// Display the input string in hexadecimal.
    Console.Write("Input string in hexadecimal: ");
    foreach (char c in inputString.ToCharArray())
        {
        Console.Write("0x{0:X2} ", (int)c);
        }
    Console.Write(twoNewLines);

// --------------------------------------------------------------------------
// Encode the input string.

    Console.WriteLine("Encode the input string...");
    numberOfEncodedBytes = ae.GetBytes(inputString, 0, inputString.Length,
                                       encodedBytes, 0);

// Display the encoded bytes.
    Console.WriteLine("Encoded bytes in hexadecimal ({0} bytes):\n",
                       numberOfEncodedBytes);
    ix = 0;
    foreach (byte b in encodedBytes)
        {
        Console.Write("0x{0:X2} ", (int)b);
        ix++;
        if (0 == ix % 6) Console.WriteLine();
        }
    Console.Write(twoNewLines);

// --------------------------------------------------------------------------
// Decode the encoded bytes, yielding a reconstituted string.

    Console.WriteLine("Decode the encoded bytes...");
    decodedString = ae.GetString(encodedBytes);

// Display the input string and the decoded string for comparison.
    Console.WriteLine("Input string:  \"{0}\"", inputString);
    Console.WriteLine("Decoded string:\"{0}\"", decodedString);
    }
}
/*
This code example produces the following results:

The name of the encoding is "us-ascii".

Input string (3 characters): "«X»"
Input string in hexadecimal: 0xAB 0x58 0xBB

Encode the input string...
Encoded bytes in hexadecimal (19 bytes):

0x28 0x75 0x6E 0x6B 0x6E 0x6F
0x77 0x6E 0x29 0x58 0x28 0x75
0x6E 0x6B 0x6E 0x6F 0x77 0x6E
0x29

Decode the encoded bytes...
Input string:  "«X»"
Decoded string:"(unknown)X(unknown)"

*/
' This example demonstrates the EncoderReplacementFallback class.
Imports System.Text

Class Sample
    Public Shared Sub Main() 
        
        ' Create an encoding, which is equivalent to calling the 
        ' ASCIIEncoding class constructor. 
        ' The EncoderReplacementFallback parameter specifies that the 
        ' string, "(unknown)", replace characters that cannot be encoded. 
        ' A decoder replacement fallback is also specified, but in this 
        ' code example the decoding operation cannot fail.  

        Dim erf As New EncoderReplacementFallback("(unknown)")
        Dim drf As New DecoderReplacementFallback("(error)")
        Dim ae As Encoding = Encoding.GetEncoding("us-ascii", erf, drf)
        
        ' The input string consists of the Unicode characters LEFT POINTING 
        ' DOUBLE ANGLE QUOTATION MARK (U+00AB), 'X' (U+0058), and RIGHT POINTING 
        ' DOUBLE ANGLE QUOTATION MARK (U+00BB). 
        ' The encoding can only encode characters in the US-ASCII range of U+0000 
        ' through U+007F. Consequently, the characters bracketing the 'X' character
        ' are replaced with the fallback replacement string, "(unknown)".

        Dim inputString As String = "«X»"
        Dim decodedString As String
        Dim twoNewLines As String = vbCrLf & vbCrLf
        Dim ix As Integer = 0
        Dim numberOfEncodedBytes As Integer = ae.GetByteCount(inputString)
        ' Counteract the compiler adding an extra byte to the array.
        Dim encodedBytes(numberOfEncodedBytes - 1) As Byte
        
        ' --------------------------------------------------------------------------
        ' Display the name of the encoding.
        Console.WriteLine("The name of the encoding is ""{0}""." & vbCrLf, ae.WebName)
        
        ' Display the input string in text.
        Console.WriteLine("Input string ({0} characters): ""{1}""", _
                           inputString.Length, inputString)
        
        ' Display the input string in hexadecimal. 
        ' Each element is converted to an integer with Convert.ToInt32.
        Console.Write("Input string in hexadecimal: ")
        Dim c As Char
        For Each c In inputString.ToCharArray()
            Console.Write("0x{0:X2} ", Convert.ToInt32(c))
        Next c
        Console.Write(twoNewLines)
        
        ' --------------------------------------------------------------------------
        ' Encode the input string. 
        Console.WriteLine("Encode the input string...")
        numberOfEncodedBytes = ae.GetBytes(inputString, 0, inputString.Length, _
                                           encodedBytes, 0)
        
        ' Display the encoded bytes. 
        ' Each element is converted to an integer with Convert.ToInt32.
        Console.WriteLine("Encoded bytes in hexadecimal ({0} bytes):" & vbCrLf, _
                           numberOfEncodedBytes)
        ix = 0
        Dim b As Byte
        For Each b In encodedBytes
            Console.Write("0x{0:X2} ", Convert.ToInt32(b))
            ix += 1
            If 0 = ix Mod 6 Then
                Console.WriteLine()
            End If
        Next b
        Console.Write(twoNewLines)
        
        ' --------------------------------------------------------------------------
        ' Decode the encoded bytes, yielding a reconstituted string.
        Console.WriteLine("Decode the encoded bytes...")
        decodedString = ae.GetString(encodedBytes)
        
        ' Display the input string and the decoded string for comparison.
        Console.WriteLine("Input string:  ""{0}""", inputString)
        Console.WriteLine("Decoded string:""{0}""", decodedString)
    
    End Sub
End Class
'
'This code example produces the following results:
'
'The name of the encoding is "us-ascii".
'
'Input string (3 characters): "X"
'Input string in hexadecimal: 0xAB 0x58 0xBB
'
'Encode the input string...
'Encoded bytes in hexadecimal (19 bytes):
'
'0x28 0x75 0x6E 0x6B 0x6E 0x6F
'0x77 0x6E 0x29 0x58 0x28 0x75
'0x6E 0x6B 0x6E 0x6F 0x77 0x6E
'0x29
'
'Decode the encoded bytes...
'Input string:  "X"
'Decoded string:"(unknown)X(unknown)"
'

Remarques

Dans .NET Framework, la GetEncoding méthode s’appuie sur la plateforme sous-jacente pour prendre en charge la plupart des pages de codes. Toutefois, .NET Framework prend en charge en mode natif certains encodages. Pour obtenir la liste des pages de codes, consultez liste des encodages. Dans .NET Core, la GetEncoding méthode retourne les encodages pris en charge en mode natif par .net core. Sur les deux implémentations .NET, vous pouvez appeler la GetEncodings méthode pour obtenir un tableau d' EncodingInfo objets qui contient des informations sur tous les encodages disponibles.

En plus des encodages qui sont disponibles en mode natif sur .NET Core ou qui sont pris en charge intrinsèquement sur une version de plateforme spécifique de .NET Framework, la GetEncoding méthode retourne tous les encodages supplémentaires rendus disponibles en inscrivant un EncodingProvider objet. Si le même encodage a été inscrit par plusieurs EncodingProvider objets, cette méthode retourne le dernier inscrit.

Dans .NET 5 et versions ultérieures, le nom utf-7 de la page de codes n’est pas pris en charge.

Notes

Les pages de codes ANSI peuvent être différentes sur des ordinateurs différents et peuvent changer sur un seul ordinateur, ce qui entraîne une altération des données. Pour obtenir les résultats les plus cohérents, vous devez utiliser un encodage Unicode, tel que UTF-8 (page de codes 65001) ou UTF-16, au lieu d’une page de codes spécifique.

GetEncodingretourne une instance mise en cache avec les paramètres par défaut. Vous devez utiliser les constructeurs de classes dérivées pour récupérer une instance avec des paramètres différents. Par exemple, la UTF32Encoding classe fournit un constructeur qui vous permet d’activer la détection d’erreurs.

Voir aussi

S’applique à