Encoding.GetEncoding Método
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Devolve uma codificação para a página de código especificada.
Sobrecargas
| Name | Description |
|---|---|
| GetEncoding(Int32) |
Devolve a codificação associada ao identificador especificado da página de códigos. |
| GetEncoding(String) |
Devolve a codificação associada ao nome da página de código especificado. |
| GetEncoding(Int32, EncoderFallback, DecoderFallback) |
Devolve a codificação associada ao identificador especificado da página de códigos. 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) |
Devolve 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)
Devolve a codificação associada ao identificador especificado da página de códigos.
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 da página de códigos da codificação preferida. Para uma lista de valores possíveis, veja Encoding.
-ou-
0 (zero), para usar a codificação padrão.
Devoluções
A codificação associada à página de código especificada.
Exceções
codepage é inferior a zero ou superior a 65535.
codepage não é suportado pela plataforma subjacente.
codepage não é suportado pela plataforma subjacente.
Exemplos
O exemplo seguinte obtém duas instâncias da mesma codificação (uma pela página de códigos e outra pelo nome) e verifica a 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
Observações
O handler de recurso depende do tipo de codificação de codepage. Se codepage for uma codificação de página de código ou conjunto de caracteres de dois bytes (DBCS), é utilizado um manipulador de recambio mais adequado. Caso contrário, é utilizado um manipulador de reserva substituto. Estes manipuladores de remédio podem não ser adequados para a sua aplicação. Para especificar o handler de reserva usado pela codificação especificada por codepage, pode chamar a GetEncoding(Int32, EncoderFallback, DecoderFallback) sobrecarga.
No .NET Framework, o método GetEncoding depende da plataforma subjacente para suportar a maioria das páginas de código. No entanto, o .NET Framework suporta nativamente algumas codificações. Para uma lista de páginas de códigos, veja Lista de codificações. No .NET Core, o método GetEncoding devolve as codificações suportadas nativamente por .NET Core. Em ambas as implementações .NET, pode chamar o método GetEncodings para obter um array de objetos EncodingInfo que contém informação sobre todas as codificações disponíveis.
Para além das codificações que estão disponíveis nativamente no .NET Core ou que são intrinsecamente suportadas numa versão específica de plataforma do .NET Framework, o método GetEncoding devolve quaisquer codificações adicionais que sejam disponibilizadas ao registar um objeto EncodingProvider. Se a mesma codificação tiver sido registada por vários EncodingProvider objetos, este método devolve o último registado.
Também podes 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: Devolve sempre a codificação que corresponde à página de código ativa do sistema em Windows. Esta é a mesma codificação devolvida pela Encoding.Default propriedade.
In .NET Core e versões posteriores: O comportamento depende da configuração de codificação da aplicação:
Nenhum fornecedor de codificação registado: Retorna um UTF8Encoding, igual a Encoding.Default.
CodePagesEncodingProvider Registado:
- No Windows, devolve a codificação que corresponde à página de código ativa do sistema (tal como o comportamento .NET Framework).
- Em plataformas não Windows, devolve sempre um UTF8Encoding.
Um fornecedor diferente registado: O comportamento é determinado por esse prestador. Consulte a sua documentação para mais detalhes. Se vários fornecedores estiverem registados, o método devolve a codificação do último fornecedor registado que trata um
codepageargumento de 0.
Note
- Algumas páginas de código não suportadas fazem com que um ArgumentException lançamento seja lançado, enquanto outras causam um NotSupportedException. Portanto, o seu código deve captar todas as exceções indicadas na secção Exceções.
- Nas versões .NET 5 e posteriores, o identificador da página de códigos
65000, que representa o UTF-7, não é suportado.
Note
As páginas de código ANSI podem ser diferentes em computadores diferentes e podem mudar num único computador, levando à corrupção dos dados. Por esta razão, se a página de códigos ativa for uma página de códigos ANSI, não é recomendado codificar e decodificar dados usando a página de códigos padrão devolvida por Encoding.GetEncoding(0) . Para obter resultados mais consistentes, deve usar uma codificação Unicode, como UTF-8 (página de códigos 65001) ou UTF-16, em vez de uma página de código específica.
GetEncoding devolve uma instância em cache com as definições predefinidas. Deves usar os construtores de classes derivadas para obter uma instância com definições diferentes. Por exemplo, a UTF32Encoding classe fornece um construtor que permite ativar a deteção de erros.
Ver também
- CodePage
- EncoderFallback
- EncoderFallback
- GetEncodings()
- Como usar classes de codificação de caracteres em .NET
Aplica-se a
GetEncoding(String)
Devolve 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 preferida. Qualquer valor devolvido pela WebName propriedade é válido. Para uma lista de valores possíveis, veja Encoding.
Devoluções
A codificação associada à página de código especificada.
Exceções
name não é um nome válido de página de código.
-ou-
A página de código indicada por name não é suportada pela plataforma subjacente.
Exemplos
O exemplo seguinte obtém duas instâncias da mesma codificação (uma pela página de códigos e outra pelo nome) e verifica a 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
Observações
O handler de recurso depende do tipo de codificação de name. Se name for uma codificação de página de código ou conjunto de caracteres de dois bytes (DBCS), é utilizado um manipulador de recambio mais adequado. Caso contrário, é utilizado um manipulador de reserva substituto. Estes manipuladores de remédio podem não ser adequados para a sua aplicação. Para especificar o handler de reserva usado pela codificação especificada por name, pode chamar a GetEncoding(String, EncoderFallback, DecoderFallback) sobrecarga.
No .NET Framework, o método GetEncoding depende da plataforma subjacente para suportar a maioria das páginas de código. No entanto, o .NET Framework suporta nativamente algumas codificações. Para uma lista de páginas de códigos, veja Lista de codificações. No .NET Core, o método GetEncoding devolve as codificações suportadas nativamente por .NET Core. Em ambas as implementações .NET, pode chamar o método GetEncodings para obter um array de objetos EncodingInfo que contém informação sobre todas as codificações disponíveis.
Para além das codificações que estão disponíveis nativamente no .NET Core ou que são intrinsecamente suportadas numa versão específica de plataforma do .NET Framework, o método GetEncoding devolve quaisquer codificações adicionais que sejam disponibilizadas ao registar um objeto EncodingProvider. Se a mesma codificação tiver sido registada por vários EncodingProvider objetos, este método devolve o último registado.
Nas versões .NET 5 e posteriores, o nome da página de código utf-7 não é suportado.
Note
As páginas de código ANSI podem ser diferentes em computadores diferentes, ou podem ser alteradas para um único computador, levando à corrupção dos dados. Para 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 devolve uma instância em cache com as definições predefinidas. Deves usar os construtores de classes derivadas para obter uma instância com definições diferentes. Por exemplo, a UTF32Encoding classe fornece um construtor que permite ativar a deteção de erros.
Ver também
- EncoderFallback
- EncoderFallback
- GetEncodings()
- Como usar classes de codificação de caracteres em .NET
Aplica-se a
GetEncoding(Int32, EncoderFallback, DecoderFallback)
Devolve a codificação associada ao identificador especificado da página de códigos. 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 da página de códigos da codificação preferida. Para uma lista de valores possíveis, veja 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 carácter 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.
Devoluções
A codificação associada à página de código especificada.
Exceções
codepage é inferior a zero ou superior a 65535.
codepage não é suportado pela plataforma subjacente.
codepage não é suportado pela plataforma subjacente.
Exemplos
O exemplo seguinte 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)"
'
Observações
Note
- Algumas páginas de código não suportadas fazem com que a exceção ArgumentException seja lançada, enquanto outras causam NotSupportedException. Portanto, o seu código deve captar todas as exceções indicadas na secção Exceções.
- Nas versões .NET 5 e posteriores, o identificador da página de códigos
65000, que representa o UTF-7, não é suportado.
No .NET Framework, o método GetEncoding depende da plataforma subjacente para suportar a maioria das páginas de código. No entanto, o .NET Framework suporta nativamente algumas codificações. Para uma lista de páginas de códigos, veja Lista de codificações. No .NET Core, o método GetEncoding devolve as codificações suportadas nativamente por .NET Core. Em ambas as implementações .NET, pode chamar o método GetEncodings para obter um array de objetos EncodingInfo que contém informação sobre todas as codificações disponíveis.
Para além das codificações que estão disponíveis nativamente no .NET Core ou que são intrinsecamente suportadas numa versão específica de plataforma do .NET Framework, o método GetEncoding devolve quaisquer codificações adicionais que sejam disponibilizadas ao registar um objeto EncodingProvider. Se a mesma codificação tiver sido registada por vários EncodingProvider objetos, este método devolve o último registado.
Também podes 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: Devolve sempre a codificação que corresponde à página de código ativa do sistema em Windows. Esta é a mesma codificação devolvida pela Encoding.Default propriedade.
In .NET Core e versões posteriores: O comportamento depende da configuração de codificação da aplicação:
Nenhum fornecedor de codificação registado: Retorna um UTF8Encoding, igual a Encoding.Default.
CodePagesEncodingProvider Registado:
- No Windows, devolve a codificação que corresponde à página de código ativa do sistema (tal como o comportamento .NET Framework).
- Em plataformas não Windows, devolve sempre um UTF8Encoding.
Um fornecedor diferente registado: O comportamento é determinado por esse prestador. Consulte a sua documentação para mais detalhes. Se vários fornecedores estiverem registados, o método devolve a codificação do último fornecedor registado que trata um
codepageargumento de 0.
Note
As páginas de código ANSI podem ser diferentes em computadores diferentes e podem mudar num único computador, levando à corrupção dos dados. Por esta razão, se a página de códigos ativa for uma página de códigos ANSI, não é recomendado codificar e decodificar dados usando a página de códigos padrão devolvida por Encoding.GetEncoding(0) . Para resultados mais consistentes, deve usar Unicode, como UTF-8 (página de códigos 65001) ou UTF-16, em vez de uma página de códigos específica.
Para obter a codificação associada à página de código ativa, pode fornecer um valor 0 para o argumento codepage ou, se o seu código estiver a correr no .NET Framework, recuperar o valor da propriedade Encoding.Default. Para determinar a página de código ativa atual, chame a função Windows GetACP do .NET Framework.
GetEncoding devolve uma instância em cache com as definições predefinidas. Deves usar os construtores de classes derivadas para obter uma instância com definições diferentes. Por exemplo, a UTF32Encoding classe fornece um construtor que permite ativar a deteção de erros.
Ver também
- CodePage
- EncoderFallback
- EncoderFallback
- GetEncodings()
- Como usar classes de codificação de caracteres em .NET
Aplica-se a
GetEncoding(String, EncoderFallback, DecoderFallback)
Devolve 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 preferida. Qualquer valor devolvido pela WebName propriedade é válido. Os valores possíveis estão listados na coluna Nome da tabela que aparece no tópico da Encoding aula.
- encoderFallback
- EncoderFallback
Um objeto que fornece um procedimento de tratamento de erros quando um carácter 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.
Devoluções
A codificação associada à página de código especificada.
Exceções
name não é um nome válido de página de código.
-ou-
A página de código indicada por name não é suportada pela plataforma subjacente.
Exemplos
O exemplo seguinte 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)"
'
Observações
No .NET Framework, o método GetEncoding depende da plataforma subjacente para suportar a maioria das páginas de código. No entanto, o .NET Framework suporta nativamente algumas codificações. Para uma lista de páginas de códigos, veja Lista de codificações. No .NET Core, o método GetEncoding devolve as codificações suportadas nativamente por .NET Core. Em ambas as implementações .NET, pode chamar o método GetEncodings para obter um array de objetos EncodingInfo que contém informação sobre todas as codificações disponíveis.
Para além das codificações que estão disponíveis nativamente no .NET Core ou que são intrinsecamente suportadas numa versão específica de plataforma do .NET Framework, o método GetEncoding devolve quaisquer codificações adicionais que sejam disponibilizadas ao registar um objeto EncodingProvider. Se a mesma codificação tiver sido registada por vários EncodingProvider objetos, este método devolve o último registado.
Nas versões .NET 5 e posteriores, o nome da página de código utf-7 não é suportado.
Note
As páginas de código ANSI podem ser diferentes em computadores diferentes e podem mudar num único computador, levando à corrupção dos dados. Para obter resultados mais consistentes, deve usar uma codificação Unicode, como UTF-8 (página de códigos 65001) ou UTF-16, em vez de uma página de código específica.
GetEncoding devolve uma instância em cache com as definições predefinidas. Deves usar os construtores de classes derivadas para obter uma instância com definições diferentes. Por exemplo, a UTF32Encoding classe fornece um construtor que permite ativar a deteção de erros.
Ver também
- EncoderFallback
- EncoderFallback
- GetEncodings()
- Como usar classes de codificação de caracteres em .NET