Partager via


UTF8Encoding.GetEncoder Méthode

Définition

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

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

Encoder

Un Encoder qui convertit une séquence de caractères Unicode en une séquence de caractères UTF-8.

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 namespace System;
using namespace System::Text;
using namespace System::Collections;
int main()
{
   array<Char>^chars = {'a','b','c',L'\u0300',L'\ua0a0'};
   array<Byte>^bytes;
   Encoder^ utf8Encoder = Encoding::UTF8->GetEncoder();
   int byteCount = utf8Encoder->GetByteCount( chars, 2, 3, true );
   bytes = gcnew array<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: " );
   IEnumerator^ myEnum = bytes->GetEnumerator();
   while ( myEnum->MoveNext() )
   {
      Byte b = safe_cast<Byte>(myEnum->Current);
      Console::Write( "[{0}]", b );
   }

   Console::WriteLine();
}
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 des blocs séquentiels de caractères en blocs séquentiels d’octets, de manière similaire à la GetBytes méthode. Toutefois, une Encoder information d’état est conservé entre les appels afin qu’elle puisse encoder correctement des séquences de caractères qui s’étendent sur des blocs. Le 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 un substitut étendu sans correspondance, et le substitut faible correspondant peut se trouver dans le bloc de données suivant. Par conséquent, GetDecoder et GetEncoder sont utiles pour la transmission réseau et les opérations de fichier, 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 des erreurs 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