Encoding.GetEncoding Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Devuelve una codificación para la página de códigos especificada.
Sobrecargas
GetEncoding(Int32) |
Devuelve la codificación asociada al identificador de página de códigos especificado. |
GetEncoding(String) |
Devuelve la codificación asociada al nombre especificado de la página de códigos. |
GetEncoding(Int32, EncoderFallback, DecoderFallback) |
Devuelve la codificación asociada al identificador de página de códigos especificado. Los parámetros especifican un controlador de errores para los caracteres que no se pueden codificar y para las secuencias de bytes que no se pueden descodificar. |
GetEncoding(String, EncoderFallback, DecoderFallback) |
Devuelve la codificación asociada al nombre especificado de la página de códigos. Los parámetros especifican un controlador de errores para los caracteres que no se pueden codificar y para las secuencias de bytes que no se pueden descodificar. |
GetEncoding(Int32)
- Source:
- Encoding.cs
- Source:
- Encoding.cs
- Source:
- Encoding.cs
Devuelve la codificación asociada al identificador de página de códigos 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
Identificador de página de códigos de la codificación preferida. Para obtener una lista de valores posibles, vea Encoding.
O bien
0 (cero), para utilizar la codificación predeterminada.
Devoluciones
Codificación asociada a la página de códigos especificada.
Excepciones
codepage
es menor que cero o mayor que 65535.
codepage
no es compatible con la plataforma subyacente.
codepage
no es compatible con la plataforma subyacente.
Ejemplos
En el ejemplo siguiente se obtienen dos instancias de la misma codificación (una por página de códigos y otra por nombre) y se comprueba su igualdad.
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
Comentarios
El controlador de reserva depende del tipo de codificación de codepage
. Si codepage
es una codificación de página de códigos o de juego de caracteres de doble byte (DBCS), se utiliza un controlador de reserva con ajuste perfecto. De lo contrario, se utiliza un controlador de reserva de reemplazo. Estos controladores de reserva pueden no ser adecuados para la aplicación. Para especificar el controlador de reserva usado por la codificación especificada por codepage
, puede llamar a la GetEncoding(Int32, EncoderFallback, DecoderFallback) sobrecarga.
En .NET Framework, el GetEncoding método se basa en la plataforma subyacente para admitir la mayoría de las páginas de códigos. Sin embargo, .NET Framework admite de forma nativa algunas codificaciones. Para obtener una lista de páginas de códigos, vea lista de codificaciones. En .NET Core, el GetEncoding método devuelve las codificaciones admitidas de forma nativa por .net Core. En ambas implementaciones de .NET, puede llamar al GetEncodings método para obtener una matriz de EncodingInfo objetos que contiene información sobre todas las codificaciones disponibles.
Además de las codificaciones que están disponibles de forma nativa en .NET Core o que se admiten de forma intrínseca en una versión específica de la plataforma de .NET Framework, el GetEncoding método devuelve cualquier codificación adicional que esté disponible mediante el registro de un EncodingProvider objeto. Si varios objetos registran la misma codificación EncodingProvider , este método devuelve la última registrada.
También puede proporcionar un valor de 0 para el codepage
argumento. Su comportamiento preciso depende de si alguna codificación se ha puesto a disposición mediante el registro de un EncodingProvider objeto:
Si se han registrado uno o más proveedores de codificación, devuelve la codificación del último proveedor registrado que ha elegido devolver una codificación cuando GetEncoding se pasa al método un
codepage
argumento de 0.En .NET Framework, si no se ha registrado ningún proveedor de codificación, si CodePagesEncodingProvider es el proveedor de codificación registrado o si ningún proveedor de codificación registrado controla un
codepage
valor de 0, devuelve la página de códigos activa del sistema operativo. Para determinar la página de códigos activa en los sistemas Windows, llame a la función GetACP de Windows desde .NET Framework.En .NET Core, si no se ha registrado ningún proveedor de codificación o si ningún proveedor de codificación registrado controla un
codepage
valor de 0, devuelve UTF8Encoding .
Nota
- Algunas páginas de códigos no compatibles provocan ArgumentException que se produzca una excepción, mientras que otras producen NotSupportedException . Por lo tanto, el código debe detectar todas las excepciones indicadas en la sección excepciones.
- En .NET 5 y versiones posteriores, no se admite el identificador
65000
de página de códigos , que representa UTF-7.
Nota
Las páginas de códigos ANSI pueden ser diferentes en distintos equipos y pueden cambiar en un solo equipo, lo que provoca daños en los datos. Por este motivo, si la página de códigos activa es una página de códigos ANSI, no se recomienda codificar y descodificar los datos mediante la página de códigos predeterminada devuelta por Encoding.GetEncoding(0)
. Para obtener los resultados más coherentes, debe usar una codificación Unicode, como UTF-8 (página de códigos 65001) o UTF-16, en lugar de una página de códigos específica.
GetEncodingDevuelve una instancia almacenada en caché con la configuración predeterminada. Debe utilizar los constructores de clases derivadas para obtener una instancia de con una configuración diferente. Por ejemplo, la UTF32Encoding clase proporciona un constructor que le permite habilitar la detección de errores.
Consulte también
- CodePage
- EncoderFallback
- EncoderFallback
- GetEncodings()
- Procedimiento para usar clases de codificación de caracteres en .NET
Se aplica a
GetEncoding(String)
- Source:
- Encoding.cs
- Source:
- Encoding.cs
- Source:
- Encoding.cs
Devuelve la codificación asociada al nombre especificado de la página de códigos.
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
Nombre de la página de códigos de la codificación preferida. Cualquier valor devuelto por la propiedad WebName es válido. Para obtener una lista de valores posibles, vea Encoding.
Devoluciones
Codificación asociada a la página de códigos especificada.
Excepciones
name
no es un nombre de página de códigos válido.
O bien
La página de códigos indicada por name
no es compatible con la plataforma subyacente.
Ejemplos
En el ejemplo siguiente se obtienen dos instancias de la misma codificación (una por página de códigos y otra por nombre) y se comprueba su igualdad.
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
Comentarios
El controlador de reserva depende del tipo de codificación de name
. Si name
es una codificación de página de códigos o de juego de caracteres de doble byte (DBCS), se utiliza un controlador de reserva con ajuste perfecto. De lo contrario, se utiliza un controlador de reserva de reemplazo. Estos controladores de reserva pueden no ser adecuados para la aplicación. Para especificar el controlador de reserva usado por la codificación especificada por name
, puede llamar a la GetEncoding(String, EncoderFallback, DecoderFallback) sobrecarga.
En .NET Framework, el GetEncoding método se basa en la plataforma subyacente para admitir la mayoría de las páginas de códigos. Sin embargo, .NET Framework admite de forma nativa algunas codificaciones. Para obtener una lista de páginas de códigos, vea lista de codificaciones. En .NET Core, el GetEncoding método devuelve las codificaciones admitidas de forma nativa por .net Core. En ambas implementaciones de .NET, puede llamar al GetEncodings método para obtener una matriz de EncodingInfo objetos que contiene información sobre todas las codificaciones disponibles.
Además de las codificaciones que están disponibles de forma nativa en .NET Core o que se admiten de forma intrínseca en una versión específica de la plataforma de .NET Framework, el GetEncoding método devuelve cualquier codificación adicional que esté disponible mediante el registro de un EncodingProvider objeto. Si varios objetos registran la misma codificación EncodingProvider , este método devuelve la última registrada.
En .NET 5 y versiones posteriores, no se admite el nombre utf-7
de la página de códigos.
Nota:
Las páginas de códigos ANSI pueden ser diferentes en distintos equipos o pueden cambiarse para un único equipo, lo que provoca daños en los datos. Para obtener los resultados más coherentes, utilice Unicode, como UTF-8 (página de códigos 65001) o UTF-16, en lugar de una página de códigos específica.
GetEncodingDevuelve una instancia almacenada en caché con la configuración predeterminada. Debe utilizar los constructores de clases derivadas para obtener una instancia de con una configuración diferente. Por ejemplo, la UTF32Encoding clase proporciona un constructor que le permite habilitar la detección de errores.
Consulte también
- EncoderFallback
- EncoderFallback
- GetEncodings()
- Procedimiento para usar clases de codificación de caracteres en .NET
Se aplica a
GetEncoding(Int32, EncoderFallback, DecoderFallback)
- Source:
- Encoding.cs
- Source:
- Encoding.cs
- Source:
- Encoding.cs
Devuelve la codificación asociada al identificador de página de códigos especificado. Los parámetros especifican un controlador de errores para los caracteres que no se pueden codificar y para las secuencias de bytes que no se pueden descodificar.
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
Identificador de página de códigos de la codificación preferida. Para obtener una lista de valores posibles, vea Encoding.
O bien
0 (cero), para utilizar la codificación predeterminada.
- encoderFallback
- EncoderFallback
Objeto que proporciona un procedimiento de control de errores cuando no se puede codificar un carácter con la codificación actual.
- decoderFallback
- DecoderFallback
Objeto que proporciona un procedimiento de control de errores cuando una secuencia de bytes no se puede descodificar con la codificación actual.
Devoluciones
Codificación asociada a la página de códigos especificada.
Excepciones
codepage
es menor que cero o mayor que 65535.
codepage
no es compatible con la plataforma subyacente.
codepage
no es compatible con la plataforma subyacente.
Ejemplos
En el siguiente ejemplo se muestra el 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)"
'
Comentarios
Nota:
- Algunas páginas de códigos no admitidas provocan que ArgumentException se produzca la excepción, mientras que otras lo hacen NotSupportedException . Por lo tanto, el código debe detectar todas las excepciones indicadas en la sección excepciones.
- En .NET 5 y versiones posteriores, no se admite el identificador
65000
de página de códigos , que representa UTF-7.
En .NET Framework, el GetEncoding método se basa en la plataforma subyacente para admitir la mayoría de las páginas de códigos. Sin embargo, .NET Framework admite de forma nativa algunas codificaciones. Para obtener una lista de páginas de códigos, vea lista de codificaciones. En .NET Core, el GetEncoding método devuelve las codificaciones admitidas de forma nativa por .net Core. En ambas implementaciones de .NET, puede llamar al GetEncodings método para obtener una matriz de EncodingInfo objetos que contiene información sobre todas las codificaciones disponibles.
Además de las codificaciones que están disponibles de forma nativa en .NET Core o que se admiten de forma intrínseca en una versión específica de la plataforma de .NET Framework, el GetEncoding método devuelve cualquier codificación adicional que esté disponible mediante el registro de un EncodingProvider objeto. Si varios objetos registran la misma codificación EncodingProvider , este método devuelve la última registrada.
También puede proporcionar un valor de 0 para el codepage
argumento. Su comportamiento preciso depende de si alguna codificación se ha puesto a disposición mediante el registro de un EncodingProvider objeto:
Si se han registrado uno o más proveedores de codificación, devuelve la codificación del último proveedor registrado que ha elegido devolver una codificación cuando GetEncoding se pasa al método un
codepage
argumento de 0.En .NET Framework, si no se ha registrado ningún proveedor de codificación, si CodePagesEncodingProvider es el proveedor de codificación registrado o si ningún proveedor de codificación registrado controla un
codepage
valor de 0, devuelve la página de códigos activa.En .NET Core, si no se ha registrado ningún proveedor de codificación o si ningún proveedor de codificación registrado controla un
codepage
valor de 0, devuelve la UTF8Encoding codificación.
Nota:
Las páginas de códigos ANSI pueden ser diferentes en distintos equipos y pueden cambiar en un solo equipo, lo que provoca daños en los datos. Por este motivo, si la página de códigos activa es una página de códigos ANSI, no se recomienda codificar y descodificar los datos mediante la página de códigos predeterminada devuelta por Encoding.GetEncoding(0)
. Para obtener los resultados más coherentes, debe usar Unicode, como UTF-8 (página de códigos 65001) o UTF-16, en lugar de una página de códigos específica.
Para obtener la codificación asociada a la página de códigos activa, puede proporcionar un valor de 0 para el codepage
argumento o, si el código se ejecuta en .NET Framework, recupere el valor de la Encoding.Default propiedad . Para determinar la página de códigos activa actual, llame a la función GetACP de Windows desde .NET Framework.
GetEncodingDevuelve una instancia almacenada en caché con la configuración predeterminada. Debe utilizar los constructores de clases derivadas para obtener una instancia de con una configuración diferente. Por ejemplo, la UTF32Encoding clase proporciona un constructor que le permite habilitar la detección de errores.
Consulte también
- CodePage
- EncoderFallback
- EncoderFallback
- GetEncodings()
- Procedimiento para usar clases de codificación de caracteres en .NET
Se aplica a
GetEncoding(String, EncoderFallback, DecoderFallback)
- Source:
- Encoding.cs
- Source:
- Encoding.cs
- Source:
- Encoding.cs
Devuelve la codificación asociada al nombre especificado de la página de códigos. Los parámetros especifican un controlador de errores para los caracteres que no se pueden codificar y para las secuencias de bytes que no se pueden descodificar.
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
Nombre de la página de códigos de la codificación preferida. Cualquier valor devuelto por la propiedad WebName es válido. Se hace una lista de los valores posibles en la columna Nombre de la tabla que aparece en el tema de la clase Encoding.
- encoderFallback
- EncoderFallback
Objeto que proporciona un procedimiento de control de errores cuando no se puede codificar un carácter con la codificación actual.
- decoderFallback
- DecoderFallback
Objeto que proporciona un procedimiento de control de errores cuando una secuencia de bytes no se puede descodificar con la codificación actual.
Devoluciones
Codificación asociada a la página de códigos especificada.
Excepciones
name
no es un nombre de página de códigos válido.
O bien
La página de códigos indicada por name
no es compatible con la plataforma subyacente.
Ejemplos
En el siguiente ejemplo se muestra el 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)"
'
Comentarios
En .NET Framework, el GetEncoding método se basa en la plataforma subyacente para admitir la mayoría de las páginas de códigos. Sin embargo, .NET Framework admite de forma nativa algunas codificaciones. Para obtener una lista de páginas de códigos, vea lista de codificaciones. En .NET Core, el GetEncoding método devuelve las codificaciones admitidas de forma nativa por .net Core. En ambas implementaciones de .NET, puede llamar al GetEncodings método para obtener una matriz de EncodingInfo objetos que contiene información sobre todas las codificaciones disponibles.
Además de las codificaciones que están disponibles de forma nativa en .NET Core o que se admiten de forma intrínseca en una versión específica de la plataforma de .NET Framework, el GetEncoding método devuelve cualquier codificación adicional que esté disponible mediante el registro de un EncodingProvider objeto. Si varios objetos registran la misma codificación EncodingProvider , este método devuelve la última registrada.
En .NET 5 y versiones posteriores, no se admite el nombre utf-7
de la página de códigos.
Nota
Las páginas de códigos ANSI pueden ser diferentes en distintos equipos y pueden cambiar en un solo equipo, lo que provoca daños en los datos. Para obtener los resultados más coherentes, debe usar una codificación Unicode, como UTF-8 (página de códigos 65001) o UTF-16, en lugar de una página de códigos específica.
GetEncodingDevuelve una instancia almacenada en caché con la configuración predeterminada. Debe utilizar los constructores de clases derivadas para obtener una instancia de con una configuración diferente. Por ejemplo, la UTF32Encoding clase proporciona un constructor que le permite habilitar la detección de errores.
Consulte también
- EncoderFallback
- EncoderFallback
- GetEncodings()
- Procedimiento para usar clases de codificación de caracteres en .NET