UTF8Encoding.GetEncoder Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Ruft einen Encoder ab, der eine Sequenz von Unicode-Zeichen in eine UTF-8-codierte Sequenz von Bytes konvertiert.
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
Gibt zurück
A Encoder that converts a sequence of Unicode characters into a UTF-8 encoded sequence of bytes.
Beispiele
Im folgenden Beispiel wird die GetEncoder Methode verwendet, um einen Encoder abzurufen, um eine Abfolge von Zeichen in eine UTF-8-codierte Bytesequenz zu konvertieren.
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
Hinweise
Die Encoder.GetBytes Methode konvertiert sequenzielle Zeichenblöcke in sequenzielle Byteblöcke, ähnlich der GetBytes Methode. Eine Encoder Zustandsinformationen werden jedoch zwischen Aufrufen beibehalten, sodass Sie Zeichensequenzen, die Blöcke umfassen, ordnungsgemäß codieren können. Außerdem Encoder werden nachfolgende Zeichen am Ende von Datenblöcken beibehalten und die nachfolgenden Zeichen im nächsten Codierungsvorgang verwendet. Beispielsweise kann ein Datenblock mit einem nicht übereinstimmenden hohen Ersatz enden, und der übereinstimmende niedrige Ersatz kann sich im nächsten Datenblock befinden. GetDecoder Daher sind sie GetEncoder nützlich für Die Netzwerkübertragung und Dateivorgänge, da diese Vorgänge häufig mit Datenblöcken statt mit einem vollständigen Datenstrom umgehen.
Wenn die Fehlererkennung aktiviert ist, d. h. der throwOnInvalidCharacters Parameter des Konstruktors, truewird auch die Fehlererkennung in der Encoder von dieser Methode zurückgegebenen aktiviert. Wenn die Fehlererkennung aktiviert ist und eine ungültige Sequenz auftritt, ist der Status des Encoders nicht definiert, und die Verarbeitung muss beendet werden.