Encoding.GetEncoding Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Retorna uma codificação para a página de código especificada.
Sobrecargas
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 especificada. |
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 erro 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 especificada. Os parâmetros especificam um manipulador de erro 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
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.
Não há suporte para codepage
na plataforma subjacente.
Não há suporte para codepage
na 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 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
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 dois bytes), um manipulador de fallback de melhor ajuste será usado. Caso contrário, será usado um manipulador de fallback de substituição. Esses manipuladores de fallback podem não ser apropriados para seu aplicativo. Para especificar o manipulador de fallback usado pela codificação especificada por codepage
, você pode chamar a GetEncoding(Int32, EncoderFallback, DecoderFallback) sobrecarga.
No .NET Framework, o GetEncoding método depende da plataforma subjacente para oferecer suporte à maioria das páginas de código. No entanto, .NET Framework nativamente dá suporte 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 nativamente suportadas 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 são intrinsecamente compatíveis com uma versão de plataforma específica do .NET Framework, o GetEncoding método retorna quaisquer codificações adicionais que são disponibilizadas pelo registro de 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. Seu comportamento preciso depende de se alguma codificação foi disponibilizada pelo registro de um EncodingProvider objeto:
Se um ou mais provedores de codificação tiverem sido registrados, ele retornará a codificação do último provedor registrado que escolheu retornar uma codificação quando GetEncoding for passado um
codepage
argumento de 0 para o método.Em .NET Framework, se nenhum provedor de codificação tiver sido registrado, se o CodePagesEncodingProvider for o provedor de codificação registrado ou se nenhum provedor de codificação registrado tratar um
codepage
valor de 0, ele retornará a página de código ativa do sistema operacional. Para determinar a página de código ativa em sistemas Windows, chame a função GetACP do Windows de .NET Framework.No .NET Core, se nenhum provedor de codificação tiver sido registrado ou se nenhum provedor de codificação registrado tratar um
codepage
valor de 0, ele retornará o UTF8Encoding .
Observação
- Algumas páginas de código sem suporte fazem com que uma ArgumentException seja lançada, enquanto outras causam um 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
65000
de 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 ativa for uma página de código ANSI, codificar e decodificar dados usando a página de código padrão retornada por Encoding.GetEncoding(0)
não será recomendado. 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.
GetEncodingRetorna uma instância armazenada em cache com as 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
- CodePage
- EncoderFallback
- EncoderFallback
- GetEncodings()
- Como usar as classes de codificação de caracteres no .NET
Aplica-se a
GetEncoding(String)
- Origem:
- Encoding.cs
- Origem:
- Encoding.cs
- Origem:
- Encoding.cs
Retorna a codificação associada ao nome da página de código especificada.
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 identificador da página de código da codificação preferencial. Qualquer valor retornado pela propriedade WebName é 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 -
A página de código indicada por name
não tem suporte da 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 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
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 dois bytes), um manipulador de fallback de melhor ajuste será usado. Caso contrário, será usado um manipulador de fallback de substituição. Esses manipuladores de fallback podem não ser apropriados para seu aplicativo. Para especificar o manipulador de fallback usado pela codificação especificada por name
, você pode chamar a GetEncoding(String, EncoderFallback, DecoderFallback) sobrecarga.
No .NET Framework, o GetEncoding método depende da plataforma subjacente para oferecer suporte à maioria das páginas de código. No entanto, .NET Framework nativamente dá suporte 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 nativamente suportadas 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 são intrinsecamente compatíveis com uma versão de plataforma específica do .NET Framework, o GetEncoding método retorna quaisquer codificações adicionais que são disponibilizadas pelo registro de 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.
GetEncodingRetorna uma instância armazenada em cache com as 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
- EncoderFallback
- EncoderFallback
- GetEncodings()
- Como usar as classes de codificação de caracteres no .NET
Aplica-se a
GetEncoding(Int32, EncoderFallback, DecoderFallback)
- 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 erro 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 erro quando um caractere não pode ser codificado com a codificação atual.
- decoderFallback
- DecoderFallback
Um objeto que fornece um procedimento de tratamento de erro 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.
Não há suporte para codepage
na plataforma subjacente.
Não há suporte para codepage
na plataforma subjacente.
Exemplos
O exemplo a seguir demonstra o Encoding.GetEncoding(String, EncoderFallback, DecoderFallback) método.
// 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)"
'
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
65000
de página de código , que representa UTF-7.
No .NET Framework, o GetEncoding método depende da plataforma subjacente para oferecer suporte à maioria das páginas de código. No entanto, .NET Framework nativamente dá suporte 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 nativamente suportadas 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 são intrinsecamente compatíveis com uma versão de plataforma específica do .NET Framework, o GetEncoding método retorna quaisquer codificações adicionais que são disponibilizadas pelo registro de 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. Seu comportamento preciso depende de se alguma codificação foi disponibilizada pelo registro de um EncodingProvider objeto:
Se um ou mais provedores de codificação tiverem sido registrados, ele retornará a codificação do último provedor registrado que escolheu retornar uma codificação quando GetEncoding for passado um
codepage
argumento de 0 para o método.Em .NET Framework, se nenhum provedor de codificação tiver sido registrado, se o CodePagesEncodingProvider for o provedor de codificação registrado ou se nenhum provedor de codificação registrado tratar um
codepage
valor de 0, ele retornará a página de código ativa.No .NET Core, se nenhum provedor de codificação tiver sido registrado ou se nenhum provedor de codificação registrado tratar um
codepage
valor de 0, ele retornará a UTF8Encoding codificação.
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 ativa for uma página de código ANSI, codificar e decodificar dados usando a página de código padrão retornada por Encoding.GetEncoding(0)
não será recomendado. 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 ativa, 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 GetACP do Windows de .NET Framework.
GetEncodingRetorna uma instância armazenada em cache com as 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
- CodePage
- EncoderFallback
- EncoderFallback
- GetEncodings()
- Como usar as classes de codificação de caracteres no .NET
Aplica-se a
GetEncoding(String, EncoderFallback, DecoderFallback)
- Origem:
- Encoding.cs
- Origem:
- Encoding.cs
- Origem:
- Encoding.cs
Retorna a codificação associada ao nome da página de código especificada. Os parâmetros especificam um manipulador de erro 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 identificador da página de código da codificação preferencial. Qualquer valor retornado pela propriedade WebName é válido. Os valores possíveis são listados na coluna Nome da tabela exibida no tópico da classe Encoding.
- encoderFallback
- EncoderFallback
Um objeto que fornece um procedimento de tratamento de erro quando um caractere não pode ser codificado com a codificação atual.
- decoderFallback
- DecoderFallback
Um objeto que fornece um procedimento de tratamento de erro 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 -
A página de código indicada por name
não tem suporte da plataforma subjacente.
Exemplos
O exemplo a seguir demonstra o Encoding.GetEncoding(String, EncoderFallback, DecoderFallback) método.
// 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)"
'
Comentários
No .NET Framework, o GetEncoding método depende da plataforma subjacente para oferecer suporte à maioria das páginas de código. No entanto, .NET Framework nativamente dá suporte 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 nativamente suportadas 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 são intrinsecamente compatíveis com uma versão de plataforma específica do .NET Framework, o GetEncoding método retorna quaisquer codificações adicionais que são disponibilizadas pelo registro de 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.
GetEncodingRetorna uma instância armazenada em cache com as 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
- EncoderFallback
- EncoderFallback
- GetEncodings()
- Como usar as classes de codificação de caracteres no .NET