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方法註冊編碼提供者也會影響傳遞參數0時的GetEncoding(Int32)行為。 這在 .NET Core 及後續版本中尤為重要,因為 GetEncoding(Int32) 搭配 codepage 0 的預設行為是回傳 UTF-8:

  • 若註冊提供者為 CodePagesEncodingProvider

    • Windows 上,GetEncoding(Int32)codepage 0 會回傳與系統有效代碼頁相符的編碼(與 Framework 行為相同.NET)。
    • non-Windows平台上,仍返回UTF-8。
  • 若註冊了自訂編碼提供者:當 GetEncoding(Int32) 傳遞參數 0時,提供者可選擇回傳哪種編碼。 提供者也可以選擇不處理此情況,方法是從其EncodingProvider.GetEncoding方法回傳null,此時會使用預設的 UTF-8 行為。

若多個提供者註冊 GetEncoding(Int32) ,會先嘗試從最近註冊的提供者取得編碼。

從 .NET Framework 4.6 開始,.NET Framework 包含一個編碼提供者 CodePagesEncodingProvider,提供完整 .NET 框架中存在但在 通用 Windows 平台 中無法使用的編碼。 預設情況下,通用 Windows 平台 僅支援 Unicode 編碼、ASCII 及代碼頁 28591。

若同一編碼提供者在多次呼叫該 RegisterProvider 方法時使用,只有第一個方法呼叫會註冊該提供者。 後續的來電則被忽略。

RegisterProvider 呼叫此方法來註冊多個處理相同編碼的提供者,最後註冊的提供者將用於所有編碼與解碼操作。 任何先前註冊的提供者都被忽略。

適用於

另請參閱