Encoding.RegisterProvider(EncodingProvider) Metoda

Definicja

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 codepage 0 zwraca kodowanie zgodne z aktywną stroną kodową systemu (taką samą jak zachowanie .NET Framework).
    • Na platformach non-Windows nadal zwraca wartość UTF-8.
  • Jeśli jest zarejestrowany niestandardowy dostawca kodowania: dostawca może wybrać kodowanie, które ma zostać zwrócone po GetEncoding(Int32) przekazaniu argumentu .0 Dostawca może również nie obsługiwać tego przypadku, wracając null z 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.

Dotyczy

Zobacz też