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) с
codepage0 возвращает кодировку, соответствующую активной кодовой странице системы (аналогично поведению .NET Framework). - На платформах non-Windows он по-прежнему возвращает UTF-8.
- В WindowsGetEncoding(Int32) с
Если зарегистрирован пользовательский поставщик кодирования: поставщик может выбрать кодирование, возвращаемое при GetEncoding(Int32) передаче аргумента
0. Поставщик также может не обрабатывать этот случай, возвращаяnullего EncodingProvider.GetEncoding метод, в этом случае используется поведение UTF-8 по умолчанию.
Если зарегистрировано несколько поставщиков, GetEncoding(Int32) сначала пытается получить кодировку из последнего зарегистрированного поставщика.
Начиная с .NET Framework 4.6, платформа .NET включает один поставщик кодирования, CodePagesEncodingProvider, что делает кодировки доступными в полной .NET Framework, но недоступны в универсальная платформа Windows. По умолчанию универсальная платформа Windows поддерживает только кодировки Юникода, ASCII и кодовую страницу 28591.
Если один и тот же поставщик кодирования используется в нескольких вызовах RegisterProvider метода, то только первый вызов метода регистрирует поставщика. Последующие вызовы игнорируются.
RegisterProvider Если метод вызывается для регистрации нескольких поставщиков, обрабатывающих одну и ту же кодировку, последний зарегистрированный поставщик используется для всех операций кодирования и декодирования. Все ранее зарегистрированные поставщики игнорируются.