UTF8Encoding.GetEncoder Methode

Definitie

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.

Van toepassing op

Zie ook