Encoding.RegisterProvider(EncodingProvider) メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
エンコード プロバイダーを登録します。
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 のサブクラス。
- 属性
例外
provider は nullです。
注釈
RegisterProvider メソッドを使用すると、EncodingProviderから派生したクラスを登録できます。これにより、サポートされていないプラットフォームで文字エンコーディングを使用できるようになります。 エンコード プロバイダーが登録されると、サポートされているエンコーディングは、 Encoding.GetEncoding オーバーロードを呼び出すことによって取得できます。 複数のエンコード プロバイダーがある場合、 Encoding.GetEncoding メソッドは、最後に登録されたプロバイダーから開始して、各プロバイダーから指定されたエンコードの取得を試みます。
RegisterProvider メソッドを使用してエンコード プロバイダーを登録すると、0の引数が渡されたときのGetEncoding(Int32)の動作にも影響します。 これは、.NET Core 以降のバージョンでは特に重要です。GetEncoding(Int32)codepage 0 の既定の動作では UTF-8 が返されます。
登録済みプロバイダーがCodePagesEncodingProviderされている場合:
-
Windows では、GetEncoding(Int32)
codepage0 は、システムのアクティブなコード ページに一致するエンコードを返します (.NET Framework の動作と同じです)。 - 非Windowsプラットフォームでは、引き続き UTF-8 が返されます。
-
Windows では、GetEncoding(Int32)
カスタム エンコード プロバイダーが登録されている場合: プロバイダーは、 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 メソッドが呼び出された場合、最後に登録されたプロバイダーはすべてのエンコードおよびデコード操作に使用されます。 以前に登録されたプロバイダーはすべて無視されます。