Compartilhar via


Encoding.GetEncoding Método

Definição

Retorna uma codificação para a página de código especificada.

Sobrecargas

Nome Description
GetEncoding(Int32)

Retorna a codificação associada ao identificador de página de código especificado.

GetEncoding(String)

Retorna a codificação associada ao nome da página de código especificado.

GetEncoding(Int32, EncoderFallback, DecoderFallback)

Retorna a codificação associada ao identificador de página de código especificado. Os parâmetros especificam um manipulador de erros para caracteres que não podem ser codificados e sequências de bytes que não podem ser decodificadas.

GetEncoding(String, EncoderFallback, DecoderFallback)

Retorna a codificação associada ao nome da página de código especificado. Os parâmetros especificam um manipulador de erros para caracteres que não podem ser codificados e sequências de bytes que não podem ser decodificadas.

GetEncoding(Int32)

Origem:
Encoding.cs
Origem:
Encoding.cs
Origem:
Encoding.cs
Origem:
Encoding.cs
Origem:
Encoding.cs

Retorna a codificação associada ao identificador de página de código especificado.

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

Parâmetros

codepage
Int32

O identificador de página de código da codificação preferencial. Para obter uma lista de valores possíveis, consulte Encoding.

- ou -

0 (zero), para usar a codificação padrão.

Retornos

A codificação associada à página de código especificada.

Exceções

codepage é menor que zero ou maior que 65535.

codepage não há suporte para a plataforma subjacente.

codepage não há suporte para a plataforma subjacente.

Exemplos

O exemplo a seguir obtém duas instâncias da mesma codificação (uma por página de código e outra por nome) e verifica sua igualdade.

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

Comentários

O manipulador de fallback depende do tipo de codificação de codepage. Se codepage for uma página de código ou codificação DBCS (conjunto de caracteres de bytes duplo), um manipulador de fallback de melhor ajuste será usado. Caso contrário, um manipulador de fallback de substituição será usado. Esses manipuladores de fallback podem não ser apropriados para seu aplicativo. Para especificar o manipulador de fallback usado pela codificação especificada, codepagevocê pode chamar a GetEncoding(Int32, EncoderFallback, DecoderFallback) sobrecarga.

No .NET Framework, o GetEncoding método depende da plataforma subjacente para dar suporte à maioria das páginas de código. No entanto, o .NET Framework dá suporte nativo a algumas codificações. Para obter uma lista de páginas de código, consulte Lista de codificações. No .NET Core, o GetEncoding método retorna as codificações com suporte nativo pelo .NET Core. Em ambas as implementações do .NET, você pode chamar o GetEncodings método para obter uma matriz de EncodingInfo objetos que contém informações sobre todas as codificações disponíveis.

Além das codificações que estão disponíveis nativamente no .NET Core ou que têm suporte intrinsecamente em uma versão de plataforma específica do .NET Framework, o GetEncoding método retorna quaisquer codificações adicionais que são disponibilizadas registrando um EncodingProvider objeto. Se a mesma codificação tiver sido registrada por vários EncodingProvider objetos, esse método retornará o último registrado.

Você também pode fornecer um valor de 0 para o codepage argumento. O comportamento varia entre o .NET Framework e o .NET Core e versões posteriores:

No .NET Framework: sempre retorna a codificação que corresponde à página de código ativo do sistema no Windows. Essa é a mesma codificação retornada pela Encoding.Default propriedade.

No .NET Core e em versões posteriores: o comportamento depende da configuração de codificação do aplicativo:

  • Nenhum provedor de codificação registrado: retorna um UTF8Encoding, o mesmo que Encoding.Default.

  • CodePagesEncodingProvider registrado:

    • No Windows, retorna a codificação que corresponde à página de código ativo do sistema (igual ao comportamento do .NET Framework).
    • Em plataformas que não são do Windows, sempre retorna um UTF8Encoding.
  • Um provedor diferente registrado: o comportamento é determinado por esse provedor. Consulte sua documentação para obter detalhes. Se vários provedores forem registrados, o método retornará a codificação do último provedor registrado que manipula um codepage argumento de 0.

Observação

  • Algumas páginas de código sem suporte fazem com que uma ArgumentException seja gerada, enquanto outras causam uma NotSupportedException. Portanto, seu código deve capturar todas as exceções indicadas na seção Exceções.
  • No .NET 5 e versões posteriores, não há suporte para o identificador 65000de página de código, que representa UTF-7.

Observação

As páginas de código ANSI podem ser diferentes em computadores diferentes e podem ser alteradas em um único computador, levando à corrupção de dados. Por esse motivo, se a página de código ativo for uma página de código ANSI, não será recomendável codificar e decodificar dados usando a página de código padrão retornada Encoding.GetEncoding(0) . Para obter os resultados mais consistentes, você deve usar uma codificação Unicode, como UTF-8 (página de código 65001) ou UTF-16, em vez de uma página de código específica.

GetEncoding retorna uma instância armazenada em cache com configurações padrão. Você deve usar os construtores de classes derivadas para obter uma instância com configurações diferentes. Por exemplo, a UTF32Encoding classe fornece um construtor que permite habilitar a detecção de erros.

Confira também

Aplica-se a

GetEncoding(String)

Origem:
Encoding.cs
Origem:
Encoding.cs
Origem:
Encoding.cs
Origem:
Encoding.cs
Origem:
Encoding.cs

Retorna a codificação associada ao nome da página de código especificado.

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

Parâmetros

name
String

O nome da página de código da codificação preferencial. Qualquer valor retornado pela WebName propriedade é válido. Para obter uma lista de valores possíveis, consulte Encoding.

Retornos

A codificação associada à página de código especificada.

Exceções

name não é um nome de página de código válido.

- ou -

Não há suporte para a página de código indicada pela name plataforma subjacente.

Exemplos

O exemplo a seguir obtém duas instâncias da mesma codificação (uma por página de código e outra por nome) e verifica sua igualdade.

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

Comentários

O manipulador de fallback depende do tipo de codificação de name. Se name for uma página de código ou codificação DBCS (conjunto de caracteres de bytes duplo), um manipulador de fallback de melhor ajuste será usado. Caso contrário, um manipulador de fallback de substituição será usado. Esses manipuladores de fallback podem não ser apropriados para seu aplicativo. Para especificar o manipulador de fallback usado pela codificação especificada, namevocê pode chamar a GetEncoding(String, EncoderFallback, DecoderFallback) sobrecarga.

No .NET Framework, o GetEncoding método depende da plataforma subjacente para dar suporte à maioria das páginas de código. No entanto, o .NET Framework dá suporte nativo a algumas codificações. Para obter uma lista de páginas de código, consulte Lista de codificações. No .NET Core, o GetEncoding método retorna as codificações com suporte nativo pelo .NET Core. Em ambas as implementações do .NET, você pode chamar o GetEncodings método para obter uma matriz de EncodingInfo objetos que contém informações sobre todas as codificações disponíveis.

Além das codificações que estão disponíveis nativamente no .NET Core ou que têm suporte intrinsecamente em uma versão de plataforma específica do .NET Framework, o GetEncoding método retorna quaisquer codificações adicionais que são disponibilizadas registrando um EncodingProvider objeto. Se a mesma codificação tiver sido registrada por vários EncodingProvider objetos, esse método retornará o último registrado.

No .NET 5 e versões posteriores, não há suporte para o nome utf-7 da página de código.

Observação

As páginas de código ANSI podem ser diferentes em computadores diferentes ou podem ser alteradas para um único computador, levando à corrupção de dados. Para obter os resultados mais consistentes, use Unicode, como UTF-8 (página de código 65001) ou UTF-16, em vez de uma página de código específica.

GetEncoding retorna uma instância armazenada em cache com configurações padrão. Você deve usar os construtores de classes derivadas para obter uma instância com configurações diferentes. Por exemplo, a UTF32Encoding classe fornece um construtor que permite habilitar a detecção de erros.

Confira também

Aplica-se a

GetEncoding(Int32, EncoderFallback, DecoderFallback)

Origem:
Encoding.cs
Origem:
Encoding.cs
Origem:
Encoding.cs
Origem:
Encoding.cs
Origem:
Encoding.cs

Retorna a codificação associada ao identificador de página de código especificado. Os parâmetros especificam um manipulador de erros para caracteres que não podem ser codificados e sequências de bytes que não podem ser decodificadas.

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

Parâmetros

codepage
Int32

O identificador de página de código da codificação preferencial. Para obter uma lista de valores possíveis, consulte Encoding.

- ou -

0 (zero), para usar a codificação padrão.

encoderFallback
EncoderFallback

Um objeto que fornece um procedimento de tratamento de erros quando um caractere não pode ser codificado com a codificação atual.

decoderFallback
DecoderFallback

Um objeto que fornece um procedimento de tratamento de erros quando uma sequência de bytes não pode ser decodificada com a codificação atual.

Retornos

A codificação associada à página de código especificada.

Exceções

codepage é menor que zero ou maior que 65535.

codepage não há suporte para a plataforma subjacente.

codepage não há suporte para a plataforma subjacente.

Exemplos

O exemplo a seguir demonstra o Encoding.GetEncoding(String, EncoderFallback, DecoderFallback) método.

// 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)"
'

Comentários

Observação

  • Algumas páginas de código sem suporte fazem com que a exceção ArgumentException seja gerada, enquanto outras causam NotSupportedException. Portanto, seu código deve capturar todas as exceções indicadas na seção Exceções.
  • No .NET 5 e versões posteriores, não há suporte para o identificador 65000de página de código, que representa UTF-7.

No .NET Framework, o GetEncoding método depende da plataforma subjacente para dar suporte à maioria das páginas de código. No entanto, o .NET Framework dá suporte nativo a algumas codificações. Para obter uma lista de páginas de código, consulte Lista de codificações. No .NET Core, o GetEncoding método retorna as codificações com suporte nativo pelo .NET Core. Em ambas as implementações do .NET, você pode chamar o GetEncodings método para obter uma matriz de EncodingInfo objetos que contém informações sobre todas as codificações disponíveis.

Além das codificações que estão disponíveis nativamente no .NET Core ou que têm suporte intrinsecamente em uma versão de plataforma específica do .NET Framework, o GetEncoding método retorna quaisquer codificações adicionais que são disponibilizadas registrando um EncodingProvider objeto. Se a mesma codificação tiver sido registrada por vários EncodingProvider objetos, esse método retornará o último registrado.

Você também pode fornecer um valor de 0 para o codepage argumento. O comportamento varia entre o .NET Framework e o .NET Core e versões posteriores:

No .NET Framework: sempre retorna a codificação que corresponde à página de código ativo do sistema no Windows. Essa é a mesma codificação retornada pela Encoding.Default propriedade.

No .NET Core e em versões posteriores: o comportamento depende da configuração de codificação do aplicativo:

  • Nenhum provedor de codificação registrado: retorna um UTF8Encoding, o mesmo que Encoding.Default.

  • CodePagesEncodingProvider registrado:

    • No Windows, retorna a codificação que corresponde à página de código ativo do sistema (igual ao comportamento do .NET Framework).
    • Em plataformas que não são do Windows, sempre retorna um UTF8Encoding.
  • Um provedor diferente registrado: o comportamento é determinado por esse provedor. Consulte sua documentação para obter detalhes. Se vários provedores forem registrados, o método retornará a codificação do último provedor registrado que manipula um codepage argumento de 0.

Observação

As páginas de código ANSI podem ser diferentes em computadores diferentes e podem ser alteradas em um único computador, levando à corrupção de dados. Por esse motivo, se a página de código ativo for uma página de código ANSI, não será recomendável codificar e decodificar dados usando a página de código padrão retornada Encoding.GetEncoding(0) . Para obter os resultados mais consistentes, você deve usar Unicode, como UTF-8 (página de código 65001) ou UTF-16, em vez de uma página de código específica.

Para obter a codificação associada à página de código ativo, você pode fornecer um valor de 0 para o argumento ou, se o codepage código estiver em execução no .NET Framework, recuperar o valor da Encoding.Default propriedade. Para determinar a página de código ativo atual, chame a função Windows GetACP do .NET Framework.

GetEncoding retorna uma instância armazenada em cache com configurações padrão. Você deve usar os construtores de classes derivadas para obter uma instância com configurações diferentes. Por exemplo, a UTF32Encoding classe fornece um construtor que permite habilitar a detecção de erros.

Confira também

Aplica-se a

GetEncoding(String, EncoderFallback, DecoderFallback)

Origem:
Encoding.cs
Origem:
Encoding.cs
Origem:
Encoding.cs
Origem:
Encoding.cs
Origem:
Encoding.cs

Retorna a codificação associada ao nome da página de código especificado. Os parâmetros especificam um manipulador de erros para caracteres que não podem ser codificados e sequências de bytes que não podem ser decodificadas.

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

Parâmetros

name
String

O nome da página de código da codificação preferencial. Qualquer valor retornado pela WebName propriedade é válido. Os valores possíveis são listados na coluna Name da tabela que aparece no tópico de Encoding classe.

encoderFallback
EncoderFallback

Um objeto que fornece um procedimento de tratamento de erros quando um caractere não pode ser codificado com a codificação atual.

decoderFallback
DecoderFallback

Um objeto que fornece um procedimento de tratamento de erros quando uma sequência de bytes não pode ser decodificada com a codificação atual.

Retornos

A codificação associada à página de código especificada.

Exceções

name não é um nome de página de código válido.

- ou -

Não há suporte para a página de código indicada pela name plataforma subjacente.

Exemplos

O exemplo a seguir demonstra o Encoding.GetEncoding(String, EncoderFallback, DecoderFallback) método.

// 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)"
'

Comentários

No .NET Framework, o GetEncoding método depende da plataforma subjacente para dar suporte à maioria das páginas de código. No entanto, o .NET Framework dá suporte nativo a algumas codificações. Para obter uma lista de páginas de código, consulte Lista de codificações. No .NET Core, o GetEncoding método retorna as codificações com suporte nativo pelo .NET Core. Em ambas as implementações do .NET, você pode chamar o GetEncodings método para obter uma matriz de EncodingInfo objetos que contém informações sobre todas as codificações disponíveis.

Além das codificações que estão disponíveis nativamente no .NET Core ou que têm suporte intrinsecamente em uma versão de plataforma específica do .NET Framework, o GetEncoding método retorna quaisquer codificações adicionais que são disponibilizadas registrando um EncodingProvider objeto. Se a mesma codificação tiver sido registrada por vários EncodingProvider objetos, esse método retornará o último registrado.

No .NET 5 e versões posteriores, não há suporte para o nome utf-7 da página de código.

Observação

As páginas de código ANSI podem ser diferentes em computadores diferentes e podem ser alteradas em um único computador, levando à corrupção de dados. Para obter os resultados mais consistentes, você deve usar uma codificação Unicode, como UTF-8 (página de código 65001) ou UTF-16, em vez de uma página de código específica.

GetEncoding retorna uma instância armazenada em cache com configurações padrão. Você deve usar os construtores de classes derivadas para obter uma instância com configurações diferentes. Por exemplo, a UTF32Encoding classe fornece um construtor que permite habilitar a detecção de erros.

Confira também

Aplica-se a