Encoding.RegisterProvider(EncodingProvider) Método

Definición

Registra un proveedor de codificación.

public:
 static void RegisterProvider(System::Text::EncodingProvider ^ provider);
[System.Security.SecurityCritical]
public static void RegisterProvider(System.Text.EncodingProvider provider);
public static void RegisterProvider(System.Text.EncodingProvider provider);
[<System.Security.SecurityCritical>]
static member RegisterProvider : System.Text.EncodingProvider -> unit
static member RegisterProvider : System.Text.EncodingProvider -> unit
Public Shared Sub RegisterProvider (provider As EncodingProvider)

Parámetros

provider
EncodingProvider

Una subclase de EncodingProvider que proporciona acceso a codificaciones de caracteres adicionales.

Atributos

Excepciones

provider es null.

Comentarios

El RegisterProvider método permite registrar una clase derivada de EncodingProvider que hace que las codificaciones de caracteres estén disponibles en una plataforma que no las admita de otro modo. Una vez registrado el proveedor de codificación, las codificaciones que admite se pueden recuperar llamando a cualquier Encoding.GetEncoding sobrecarga. Si hay varios proveedores de codificación, el Encoding.GetEncoding método intenta recuperar una codificación especificada de cada proveedor a partir de la registrada más recientemente.

El registro de un proveedor de codificación mediante el RegisterProvider método también afecta al comportamiento de GetEncoding(Int32) cuando se pasa un argumento de 0. Esto es especialmente importante en .NET Core y versiones posteriores donde el comportamiento predeterminado de GetEncoding(Int32) con codepage 0 es devolver UTF-8:

  • Si el proveedor registrado es CodePagesEncodingProvider:

    • En Windows, GetEncoding(Int32) con codepage 0 devuelve la codificación que coincide con la página de códigos activa del sistema (igual que el comportamiento de .NET Framework).
    • En non-Windows plataformas, todavía devuelve UTF-8.
  • Si se registra un proveedor de codificación personalizada: el proveedor puede elegir qué codificación devolver cuando GetEncoding(Int32) se pasa un argumento de 0. El proveedor también puede optar por no controlar este caso devolviendo null desde su EncodingProvider.GetEncoding método , en cuyo caso se usa el comportamiento predeterminado de UTF-8.

Si hay varios proveedores registrados, GetEncoding(Int32) primero intenta recuperar la codificación del proveedor registrado más recientemente.

A partir de .NET Framework 4.6, .NET Framework incluye un proveedor de codificación, CodePagesEncodingProvider, que hace que las codificaciones estén disponibles en el marco de .NET completo, pero que no están disponibles en el Plataforma universal de Windows. De forma predeterminada, el Plataforma universal de Windows solo admite las codificaciones Unicode, ASCII y la página de códigos 28591.

Si se usa el mismo proveedor de codificación en varias llamadas al RegisterProvider método , solo la primera llamada al método registra el proveedor. Las llamadas posteriores se omiten.

Si se llama al RegisterProvider método para registrar varios proveedores que controlan la misma codificación, el último proveedor registrado es el utilizado para todas las operaciones de codificación y descodificación. Se omiten todos los proveedores registrados anteriormente.

Se aplica a

Consulte también