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 は、システムのアクティブなコード ページに一致するエンコードを返します (.NET Framework の動作と同じです)。
    • 非Windowsプラットフォームでは、引き続き UTF-8 が返されます。
  • カスタム エンコード プロバイダーが登録されている場合: プロバイダーは、 GetEncoding(Int32)0の引数を渡されたときに返すエンコードを選択できます。 プロバイダーは、EncodingProvider.GetEncoding メソッドからnullを返すことによって、このケースを処理しないことを選択することもできます。この場合、既定の UTF-8 動作が使用されます。

複数のプロバイダーが登録されている場合、 GetEncoding(Int32) は最初に最後に登録されたプロバイダーからエンコードの取得を試みます。

.NET Framework 4.6 以降、.NET Framework には 1 つのエンコード プロバイダーである CodePagesEncodingProvider が含まれています。これにより、.NET Framework 全体に存在するが、ユニバーサル Windows プラットフォームでは使用できないエンコードを使用できるようになります。 既定では、ユニバーサル Windows プラットフォームは Unicode エンコード、ASCII、およびコード ページ 28591 のみをサポートします。

RegisterProvider メソッドの複数の呼び出しで同じエンコード プロバイダーが使用されている場合、最初のメソッド呼び出しのみがプロバイダーを登録します。 後続の呼び出しは無視されます。

同じエンコードを処理する複数のプロバイダーを登録するために RegisterProvider メソッドが呼び出された場合、最後に登録されたプロバイダーはすべてのエンコードおよびデコード操作に使用されます。 以前に登録されたプロバイダーはすべて無視されます。

適用対象

こちらもご覧ください