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 доступ к дополнительным кодировкам символов.

Атрибуты

Исключения

provider равно null.

Комментарии

Метод RegisterProvider позволяет зарегистрировать класс, производный от EncodingProvider этого, делает кодировки символов доступными на платформе, которая не поддерживает их. После регистрации поставщика кодирования кодирование, которое он поддерживает, можно получить путем вызова любой Encoding.GetEncoding перегрузки. Если существует несколько поставщиков кодирования, Encoding.GetEncoding метод пытается получить указанную кодировку от каждого поставщика, начиная с последней зарегистрированной.

Регистрация поставщика кодирования с помощью RegisterProvider метода также влияет на поведение GetEncoding(Int32) при передаче аргумента 0. Это особенно важно в .NET Core и более поздних версиях, где поведение по умолчанию для GetEncoding(Int32) с codepage 0 — возврат UTF-8:

  • Если зарегистрированный поставщик:CodePagesEncodingProvider

    • В WindowsGetEncoding(Int32) с codepage 0 возвращает кодировку, соответствующую активной кодовой странице системы (аналогично поведению .NET Framework).
    • На платформах non-Windows он по-прежнему возвращает UTF-8.
  • Если зарегистрирован пользовательский поставщик кодирования: поставщик может выбрать кодирование, возвращаемое при GetEncoding(Int32) передаче аргумента 0. Поставщик также может не обрабатывать этот случай, возвращая null его EncodingProvider.GetEncoding метод, в этом случае используется поведение UTF-8 по умолчанию.

Если зарегистрировано несколько поставщиков, GetEncoding(Int32) сначала пытается получить кодировку из последнего зарегистрированного поставщика.

Начиная с .NET Framework 4.6, платформа .NET включает один поставщик кодирования, CodePagesEncodingProvider, что делает кодировки доступными в полной .NET Framework, но недоступны в универсальная платформа Windows. По умолчанию универсальная платформа Windows поддерживает только кодировки Юникода, ASCII и кодовую страницу 28591.

Если один и тот же поставщик кодирования используется в нескольких вызовах RegisterProvider метода, то только первый вызов метода регистрирует поставщика. Последующие вызовы игнорируются.

RegisterProvider Если метод вызывается для регистрации нескольких поставщиков, обрабатывающих одну и ту же кодировку, последний зарегистрированный поставщик используется для всех операций кодирования и декодирования. Все ранее зарегистрированные поставщики игнорируются.

Применяется к

См. также раздел