UTF8Encoding.GetEncoder Metod

Definition

Hämtar en kodare som konverterar en sekvens med Unicode-tecken till en UTF-8-kodad sekvens med byte.

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

Returer

En Encoder som konverterar en sekvens med Unicode-tecken till en UTF-8-kodad sekvens med byte.

Exempel

I följande exempel används GetEncoder metoden för att hämta en kodare för att konvertera en sekvens med tecken till en UTF-8-kodad sekvens med byte.

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

Kommentarer

Metoden Encoder.GetBytes konverterar sekventiella teckenblock till sekventiella block med byte, på ett sätt som liknar GetBytes metoden. En underhåller dock Encoder tillståndsinformation mellan anrop så att den korrekt kan koda teckensekvenser som sträcker sig över block. Bevarar Encoder också avslutande tecken i slutet av datablocken och använder de avslutande tecknen i nästa kodningsåtgärd. Ett datablock kan till exempel sluta med en oöverträffad hög surrogat, och den matchande låga surrogaten kan finnas i nästa datablock. GetDecoder Därför och GetEncoder är användbara för nätverksöverföring och filåtgärder, eftersom dessa åtgärder ofta hanterar datablock i stället för en fullständig dataström.

Om felidentifiering är aktiverat, dvs throwOnInvalidCharacters . parametern för konstruktorn är inställd på true, aktiveras även felidentifiering i den Encoder som returneras av den här metoden. Om felidentifiering är aktiverat och en ogiltig sekvens påträffas är kodarens tillstånd odefinierat och bearbetningen måste stoppas.

Gäller för

Se även