UTF8Encoding.GetEncoder Méthode

Définition

Obtient un encodeur qui convertit une séquence de caractères Unicode en séquence codée UTF-8 d’octets.

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

Retours

Qui Encoder convertit une séquence de caractères Unicode en séquence codée en UTF-8 d’octets.

Exemples

L’exemple suivant utilise la GetEncoder méthode pour obtenir un encodeur pour convertir une séquence de caractères en une séquence encodée UTF-8 d’octets.

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

Remarques

La Encoder.GetBytes méthode convertit les blocs séquentiels de caractères en blocs séquentiels d’octets, de manière similaire à la GetBytes méthode. Toutefois, un Encoder état est conservé entre les appels afin qu’il puisse encoder correctement des séquences de caractères qui s’étendent sur des blocs. Il Encoder conserve également les caractères de fin à la fin des blocs de données et utilise les caractères de fin dans l’opération d’encodage suivante. Par exemple, un bloc de données peut se terminer par une substitution élevée sans correspondance, et la substitution faible correspondante peut se trouver dans le bloc de données suivant. Par conséquent, GetDecoder et GetEncoder sont utiles pour les opérations de transmission et de fichier réseau, car ces opérations traitent souvent des blocs de données au lieu d’un flux de données complet.

Si la détection d’erreur est activée, autrement dit, le throwOnInvalidCharacters paramètre du constructeur est défini truesur , la détection d’erreur est également activée dans le Encoder retour de cette méthode. Si la détection d’erreur est activée et qu’une séquence non valide est rencontrée, l’état de l’encodeur n’est pas défini et le traitement doit s’arrêter.

S’applique à

Voir aussi