Encoding.RegisterProvider(EncodingProvider) Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Rejestruje dostawcę kodowania.
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)
Parametry
- provider
- EncodingProvider
Podklasa EncodingProvider , która zapewnia dostęp do dodatkowych kodowań znaków.
- Atrybuty
Wyjątki
Parametr provider ma wartość null.
Uwagi
Metoda RegisterProvider umożliwia zarejestrowanie klasy pochodzącej z EncodingProvider tej klasy, dzięki czemu kodowanie znaków jest dostępne na platformie, która nie obsługuje ich w inny sposób. Po zarejestrowaniu dostawcy kodowania kodowanie, które obsługuje, można pobrać przez wywołanie dowolnego Encoding.GetEncoding przeciążenia. Jeśli istnieje wiele dostawców kodowania, Encoding.GetEncoding metoda próbuje pobrać określone kodowanie z każdego dostawcy, począwszy od tego, który został ostatnio zarejestrowany.
Zarejestrowanie dostawcy kodowania przy użyciu RegisterProvider metody wpływa również na zachowanie GetEncoding(Int32) podczas przekazywania argumentu .0 Jest to szczególnie ważne w .NET Core i nowszych wersjach, w których domyślne zachowanie GetEncoding(Int32) z codepage 0 jest zwracanie UTF-8:
Jeśli zarejestrowany dostawca to CodePagesEncodingProvider:
- W WindowsGetEncoding(Int32) z
codepage0 zwraca kodowanie zgodne z aktywną stroną kodową systemu (taką samą jak zachowanie .NET Framework). - Na platformach non-Windows nadal zwraca wartość UTF-8.
- W WindowsGetEncoding(Int32) z
Jeśli jest zarejestrowany niestandardowy dostawca kodowania: dostawca może wybrać kodowanie, które ma zostać zwrócone po GetEncoding(Int32) przekazaniu argumentu .
0Dostawca może również nie obsługiwać tego przypadku, wracającnullz metody EncodingProvider.GetEncoding , w takim przypadku jest używane domyślne zachowanie UTF-8.
Jeśli wielu dostawców jest zarejestrowanych, GetEncoding(Int32) najpierw próbuje pobrać kodowanie z ostatnio zarejestrowanego dostawcy.
Począwszy od platformy .NET Framework 4.6, .NET Framework zawiera jednego dostawcę kodowania, CodePagesEncodingProvider, który udostępnia kodowanie, które znajdują się w pełnej .NET Framework, ale nie są dostępne w platforma uniwersalna systemu Windows. Domyślnie platforma uniwersalna systemu Windows obsługuje tylko kodowanie Unicode, ASCII i stronę kodów 28591.
Jeśli ten sam dostawca kodowania jest używany w wielu wywołaniach RegisterProvider metody, tylko pierwsze wywołanie metody rejestruje dostawcę. Kolejne wywołania są ignorowane.
RegisterProvider Jeśli metoda jest wywoływana w celu zarejestrowania wielu dostawców obsługujących to samo kodowanie, ostatni zarejestrowany dostawca jest używany do wszystkich operacji kodowania i dekodowania. Wszyscy wcześniej zarejestrowani dostawcy są ignorowani.