UTF8Encoding.GetEncoder 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 koder, który konwertuje sekwencję znaków Unicode na sekwencję zakodowaną w formacie UTF-8 bajtów.
public:
override System::Text::Encoder ^ GetEncoder();
public override System.Text.Encoder GetEncoder();
override this.GetEncoder : unit -> System.Text.Encoder
Public Overrides Function GetEncoder () As Encoder
Zwraca
Element Encoder , który konwertuje sekwencję znaków Unicode na sekwencję zakodowaną w formacie UTF-8 bajtów.
Przykłady
W poniższym przykładzie użyto GetEncoder metody w celu uzyskania kodera w celu przekonwertowania sekwencji znaków na sekwencję zakodowaną w formacie UTF-8 bajtów.
using System;
using System.Text;
class UTF8EncodingExample {
public static void Main() {
Char[] chars = new Char[] {'a', 'b', 'c', '\u0300', '\ua0a0'};
Byte[] bytes;
Encoder utf8Encoder = Encoding.UTF8.GetEncoder();
int byteCount = utf8Encoder.GetByteCount(chars, 2, 3, true);
bytes = new Byte[byteCount];
int bytesEncodedCount = utf8Encoder.GetBytes(chars, 2, 3, bytes, 0, true);
Console.WriteLine(
"{0} bytes used to encode characters.", bytesEncodedCount
);
Console.Write("Encoded bytes: ");
foreach (Byte b in bytes) {
Console.Write("[{0}]", b);
}
Console.WriteLine();
}
}
Imports System.Text
Imports Microsoft.VisualBasic.Strings
Class UTF8EncodingExample
Public Shared Sub Main()
'Characters:
' ChrW(97) = a
' ChrW(98) = b
' ChrW(99) = c
' ChrW(768) = `
' ChrW(41120) = valid unicode code point, but not a character
Dim chars() As Char = {ChrW(97), ChrW(98), ChrW(99), ChrW(768), ChrW(41120)}
Dim bytes() As Byte
Dim utf8Encoder As Encoder = Encoding.UTF8.GetEncoder()
Dim byteCount As Integer = utf8Encoder.GetByteCount(chars, 2, 3, True)
bytes = New Byte(byteCount - 1) {}
Dim bytesEncodedCount As Integer = utf8Encoder.GetBytes( _
chars, 2, 3, bytes, 0, True _
)
Console.WriteLine("{0} bytes used to encode characters.", bytesEncodedCount)
Console.Write("Encoded bytes: ")
Dim b As Byte
For Each b In bytes
Console.Write("[{0}]", b)
Next b
Console.WriteLine()
End Sub
End Class
Uwagi
Metoda Encoder.GetBytes konwertuje sekwencyjne bloki znaków na sekwencyjne bloki bajtów w sposób podobny do GetBytes metody . Jednak element Encoder zachowuje informacje o stanie między wywołaniami, dzięki czemu może poprawnie kodować sekwencje znaków obejmujące bloki. Element Encoder zachowuje również końcowe znaki na końcu bloków danych i używa znaków końcowych w następnej operacji kodowania. Na przykład blok danych może kończyć się niedopasowanym wysokim surrogatem, a pasujący niski zastępca może znajdować się w następnym bloku danych. 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 Encoder przez tę metodę. Jeśli wykrywanie błędów jest włączone i napotkana jest nieprawidłowa sekwencja, stan kodera jest niezdefiniowany i przetwarzanie musi zostać zatrzymane.