UTF8Encoding.GetEncoder Methode
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Hiermee verkrijgt u een coderingsprogramma waarmee een reeks Unicode-tekens wordt geconverteerd naar een UTF-8 gecodeerde reeks bytes.
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
Retouren
Een Encoder die een reeks Unicode-tekens converteert naar een UTF-8 gecodeerde reeks bytes.
Voorbeelden
In het volgende voorbeeld wordt de GetEncoder methode gebruikt om een encoder te verkrijgen om een reeks tekens te converteren naar een UTF-8 gecodeerde reeks bytes.
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
Opmerkingen
De Encoder.GetBytes methode converteert sequentiële tekens naar sequentiële blokken van bytes, op een manier die vergelijkbaar is met de GetBytes methode. Encoder Een onderhoudt echter statusinformatie tussen aanroepen, zodat deze tekenreeksen die blokken omvatten, correct kan coderen. Het Encoder behoudt ook volgtekens aan het einde van gegevensblokken en gebruikt de volgtekens in de volgende coderingsbewerking. Een gegevensblok kan bijvoorbeeld eindigen met een niet-overeenkomend hoog surrogaat en de overeenkomende lage surrogaat kan zich in het volgende gegevensblok bevinden. GetDecoder Daarom en GetEncoder zijn nuttig voor netwerkoverdracht en bestandsbewerkingen, omdat deze bewerkingen vaak omgaan met blokken gegevens in plaats van een volledige gegevensstroom.
Als foutdetectie is ingeschakeld, is de throwOnInvalidCharacters parameter van de constructor ingesteld op true, wordt foutdetectie ook ingeschakeld in de Encoder geretourneerde methode. Als foutdetectie is ingeschakeld en er een ongeldige reeks wordt aangetroffen, is de status van de encoder niet gedefinieerd en moet de verwerking worden gestopt.