UTF8Encoding.GetDecoder 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.
Uzyskuje dekoder, który konwertuje zakodowaną sekwencję bajtów UTF-8 na sekwencję znaków Unicode.
public:
override System::Text::Decoder ^ GetDecoder();
public override System.Text.Decoder GetDecoder();
override this.GetDecoder : unit -> System.Text.Decoder
Public Overrides Function GetDecoder () As Decoder
Zwraca
Dekoder, który konwertuje sekwencję bajtów zakodowaną w formacie UTF-8 na sekwencję znaków Unicode.
Przykłady
W poniższym przykładzie GetDecoder użyto metody do uzyskania dekodera UTF-8. Dekoder konwertuje sekwencję bajtów na sekwencję znaków.
using System;
using System.Text;
class UTF8EncodingExample {
public static void Main() {
Char[] chars;
Byte[] bytes = new Byte[] {
99, 204, 128, 234, 130, 160
};
Decoder utf8Decoder = Encoding.UTF8.GetDecoder();
int charCount = utf8Decoder.GetCharCount(bytes, 0, bytes.Length);
chars = new Char[charCount];
int charsDecodedCount = utf8Decoder.GetChars(bytes, 0, bytes.Length, chars, 0);
Console.WriteLine(
"{0} characters used to decode bytes.", charsDecodedCount
);
Console.Write("Decoded chars: ");
foreach (Char c in chars) {
Console.Write("[{0}]", c);
}
Console.WriteLine();
}
}
Imports System.Text
Class UTF8EncodingExample
Public Shared Sub Main()
Dim chars() As Char
Dim bytes() As Byte = {99, 204, 128, 234, 130, 160}
Dim utf8Decoder As Decoder = Encoding.UTF8.GetDecoder()
Dim charCount As Integer = utf8Decoder.GetCharCount(bytes, 0, bytes.Length)
chars = New Char(charCount - 1) {}
Dim charsDecodedCount As Integer = utf8Decoder.GetChars( _
bytes, 0, bytes.Length, chars, 0 _
)
Console.WriteLine("{0} characters used to decode bytes.", charsDecodedCount)
Console.Write("Decoded chars: ")
Dim c As Char
For Each c In chars
Console.Write("[{0}]", c)
Next c
Console.WriteLine()
End Sub
End Class
Uwagi
Metoda Decoder.GetChars konwertuje sekwencyjne bloki bajtów na sekwencyjne bloki znaków w sposób podobny do GetChars metody tej klasy. Jednak element Decoder zachowuje informacje o stanie między wywołaniami, dzięki czemu może poprawnie dekodować sekwencje bajtów obejmujące bloki. Obiekt Decoder zachowuje również końcowe bajty na końcu bloków danych i używa bajtów końcowych w następnej operacji dekodowania. GetDecoder W związku z tym i GetEncoder są przydatne w przypadku operacji transmisji i plików sieci, ponieważ te operacje często zajmują się blokami danych zamiast pełnego strumienia danych.
Jeśli wykrywanie błędów jest włączone, oznacza to, że throwOnInvalidCharacters parametr konstruktora jest ustawiony na true, wykrywanie błędów jest również włączone w zwracanej Decoder przez tę metodę. Jeśli jest włączona funkcja wykrywania błędów i napotkana jest nieprawidłowa sekwencja, stan dekodera jest niezdefiniowany, a przetwarzanie musi zostać zatrzymane.