Encoding.RegisterProvider(EncodingProvider) 方法

定义

注册编码提供程序。

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)

参数

provider
EncodingProvider

该类的 EncodingProvider 子类提供对其他字符编码的访问权限。

属性

例外

providernull

注解

该方法 RegisterProvider 允许注册派生自 EncodingProvider 的类,使字符编码在不支持字符编码的平台上可用。 注册编码提供程序后,可以通过调用任何 Encoding.GetEncoding 重载来检索它支持的编码。 如果有多个编码提供程序,该方法 Encoding.GetEncoding 将尝试从每个提供程序检索指定的编码,从最近注册的一个提供程序开始。

使用RegisterProvider该方法注册编码提供程序也会影响传递参数GetEncoding(Int32)时的行为0。 这在 .NET Core 和更高版本中尤其重要,其中GetEncoding(Int32) 0 的 codepage 的默认行为是返回 UTF-8:

  • 如果已注册的提供程序为 CodePagesEncodingProvider

    • Windows 上,具有 GetEncoding(Int32) 0 的 codepage 返回与系统的活动代码页(与 .NET Framework 行为相同)的编码。
    • non-Windows 平台上,它仍返回 UTF-8。
  • 如果注册了自定义编码提供程序:提供程序可以选择在传递参数时 GetEncoding(Int32) 返回的 0编码。 提供程序还可以选择不处理此情况,方法是从方法null返回EncodingProvider.GetEncoding,在这种情况下使用默认的 UTF-8 行为。

如果注册了多个提供程序, GetEncoding(Int32) 则首先尝试从最近注册的提供程序检索编码。

从 .NET Framework 4.6 开始,.NET Framework 包括一个编码提供程序,CodePagesEncodingProvider,使编码在完整的 .NET Framework 中提供,但在通用 Windows 平台中不可用。 默认情况下,通用 Windows 平台仅支持 Unicode 编码、ASCII 和代码页 28591。

如果在对方法的多个调用 RegisterProvider 中使用同一编码提供程序,则只有第一个方法调用注册提供程序。 将忽略后续调用。

RegisterProvider如果调用该方法来注册处理相同编码的多个提供程序,则最后一个注册的提供程序用于所有编码和解码操作。 将忽略任何以前注册的提供程序。

适用于

另请参阅