UTF8Encoding.GetEncoder Metoda

Definice

Získá kodér, který převede posloupnost znaků Unicode na posloupnost kódování UTF-8 bajtů.

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

Návraty

A Encoder , který převede posloupnost znaků Unicode na sekvenci bajtů s kódováním UTF-8.

Příklady

Následující příklad používá metodu GetEncoder k získání kodéru pro převod posloupnosti znaků na kódování UTF-8 sekvenci bajtů.

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

Poznámky

Metoda Encoder.GetBytes převádí sekvenční bloky znaků na sekvenční bloky bajtů způsobem podobným GetBytes metodě. Udržuje však informace o stavu mezi voláními, Encoder aby bylo možné správně zakódovat sekvence znaků, které pokrývají bloky. Na konci datových bloků se Encoder zachovají také koncové znaky a v další operaci kódování se používají koncové znaky. Například datový blok může končit nedostupnou vysokou náhradou a odpovídající nízká náhrada může být v dalším bloku dat. GetDecoder Proto jsou GetEncoder užitečné pro síťové přenosy a operace se soubory, protože tyto operace často zpracovávají bloky dat místo kompletního datového proudu.

Pokud je povolena detekce chyb, to znamená, throwOnInvalidCharacters že parametr konstruktoru je nastaven na true, detekce chyb je také povolena ve Encoder vrácených touto metodou. Pokud je povolená detekce chyb a dojde k neplatné sekvenci, stav kodéru není definován a zpracování se musí zastavit.

Platí pro

Viz také