Lire en anglais

Partager via


Encoder Classe

Définition

Convertit un jeu de caractères en une séquence d'octets.

C#
public abstract class Encoder
C#
[System.Serializable]
public abstract class Encoder
C#
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public abstract class Encoder
Héritage
Encoder
Attributs

Exemples

L’exemple suivant montre comment convertir un tableau de caractères Unicode en blocs d’octets à l’aide d’un encodage spécifié. À des fins de comparaison, le tableau de caractères est d’abord encodé à l’aide de UTF7Encoding. Ensuite, le tableau de caractères est encodé à l’aide d’un Encoder.

C#
using System;
using System.Text;

class EncoderTest {
    public static void Main() {
        // The characters to encode.
        Char[] chars = new Char[] {
            '\u0023', // #
            '\u0025', // %
            '\u03a0', // Pi
            '\u03a3'  // Sigma
        };

        // Encode characters using an Encoding object.
        Encoding encoding = Encoding.UTF7;
        Console.WriteLine("Using Encoding\n--------------");

        // Encode complete array for comparison.
        Byte[] allCharactersFromEncoding = encoding.GetBytes(chars);
        Console.WriteLine("All characters encoded:");
        ShowArray(allCharactersFromEncoding);

        // Encode characters, one-by-one.
        // The Encoding object will NOT maintain state between calls.
        Byte[] firstchar = encoding.GetBytes(chars, 0, 1);
        Console.WriteLine("First character:");
        ShowArray(firstchar);

        Byte[] secondchar = encoding.GetBytes(chars, 1, 1);
        Console.WriteLine("Second character:");
        ShowArray(secondchar);

        Byte[] thirdchar = encoding.GetBytes(chars, 2, 1);
        Console.WriteLine("Third character:");
        ShowArray(thirdchar);

        Byte[] fourthchar = encoding.GetBytes(chars, 3, 1);
        Console.WriteLine("Fourth character:");
        ShowArray(fourthchar);

        // Now, encode characters using an Encoder object.
        Encoder encoder = encoding.GetEncoder();
        Console.WriteLine("Using Encoder\n-------------");

        // Encode complete array for comparison.
        Byte[] allCharactersFromEncoder = new Byte[encoder.GetByteCount(chars, 0, chars.Length, true)];
        encoder.GetBytes(chars, 0, chars.Length, allCharactersFromEncoder, 0, true);
        Console.WriteLine("All characters encoded:");
        ShowArray(allCharactersFromEncoder);

        // Do not flush state; i.e. maintain state between calls.
        bool bFlushState = false;

        // Encode characters one-by-one.
        // By maintaining state, the Encoder will not store extra bytes in the output.
        Byte[] firstcharNoFlush = new Byte[encoder.GetByteCount(chars, 0, 1, bFlushState)];
        encoder.GetBytes(chars, 0, 1, firstcharNoFlush, 0, bFlushState);
        Console.WriteLine("First character:");
        ShowArray(firstcharNoFlush);

        Byte[] secondcharNoFlush = new Byte[encoder.GetByteCount(chars, 1, 1, bFlushState)];
        encoder.GetBytes(chars, 1, 1, secondcharNoFlush, 0, bFlushState);
        Console.WriteLine("Second character:");
        ShowArray(secondcharNoFlush);

        Byte[] thirdcharNoFlush = new Byte[encoder.GetByteCount(chars, 2, 1, bFlushState)];
        encoder.GetBytes(chars, 2, 1, thirdcharNoFlush, 0, bFlushState);
        Console.WriteLine("Third character:");
        ShowArray(thirdcharNoFlush);

        // Must flush state on last call to GetBytes().
        bFlushState = true;
        
        Byte[] fourthcharNoFlush = new Byte[encoder.GetByteCount(chars, 3, 1, bFlushState)];
        encoder.GetBytes(chars, 3, 1, fourthcharNoFlush, 0, bFlushState);
        Console.WriteLine("Fourth character:");
        ShowArray(fourthcharNoFlush);
    }

    public static void ShowArray(Array theArray) {
        foreach (Object o in theArray) {
            Console.Write("[{0}]", o);
        }
        Console.WriteLine("\n");
    }
}

/* This code example produces the following output.

Using Encoding
--------------
All characters encoded:
[43][65][67][77][65][74][81][79][103][65][54][77][45]

First character:
[43][65][67][77][45]

Second character:
[43][65][67][85][45]

Third character:
[43][65][54][65][45]

Fourth character:
[43][65][54][77][45]

Using Encoder
-------------
All characters encoded:
[43][65][67][77][65][74][81][79][103][65][54][77][45]

First character:
[43][65][67]

Second character:
[77][65][74]

Third character:
[81][79][103]

Fourth character:
[65][54][77][45]


*/

Remarques

Pour obtenir une instance d’une implémentation de la Encoder classe , l’application doit utiliser la GetEncoder méthode d’une Encoding implémentation.

La GetByteCount méthode détermine le nombre d’octets entraînant l’encodage d’un jeu de caractères Unicode, et la GetBytes méthode effectue l’encodage réel. Plusieurs versions de ces deux méthodes sont disponibles dans la Encoder classe . Pour plus d'informations, consultez Encoding.GetBytes.

Un Encoder objet conserve les informations d’état entre les appels successifs aux GetBytes méthodes ou Convert afin qu’il 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.

Note

Lorsque l’application a terminé avec un flux de données, elle doit s’assurer que les informations d’état sont vidées en définissant le flush paramètre true sur dans l’appel de méthode approprié. Si une exception se produit ou si l’application change de flux, elle doit appeler Reset pour effacer l’état interne de l’objet Encoder .

Notes pour les responsables de l’implémentation

Lorsque votre application hérite de cette classe, elle doit remplacer tous les membres.

Constructeurs

Encoder()

Initialise une nouvelle instance de la classe Encoder.

Propriétés

Fallback

Obtient ou définit un objet EncoderFallback pour l'objet Encoder actuel.

FallbackBuffer

Obtient l'objet EncoderFallbackBuffer associé à l'objet Encoder en cours.

Méthodes

Convert(Char*, Int32, Byte*, Int32, Boolean, Int32, Int32, Boolean)

Convertit une mémoire tampon de caractères Unicode en séquence d’octets encodée et stocke le résultat dans une autre mémoire tampon.

Convert(Char[], Int32, Int32, Byte[], Int32, Int32, Boolean, Int32, Int32, Boolean)

Convertit un tableau de caractères Unicode en séquence d’octets encodée et stocke le résultat dans un tableau d’octets.

Convert(ReadOnlySpan<Char>, Span<Byte>, Boolean, Int32, Int32, Boolean)

Convertit une étendue de caractères Unicode en séquence d’octets encodée et stocke le résultat dans une autre mémoire tampon.

Equals(Object)

Détermine si l'objet spécifié est égal à l'objet actuel.

(Hérité de Object)
GetByteCount(Char*, Int32, Boolean)

En cas de substitution dans une classe dérivée, calcule le nombre d'octets produits par l'encodage d'un jeu de caractères commençant au pointeur de caractère spécifié. Un paramètre indique si l'état interne de l'encodeur doit être effacé après le calcul.

GetByteCount(Char[], Int32, Int32, Boolean)

En cas de substitution dans une classe dérivée, calcule le nombre d'octets produits par l'encodage d'un jeu de caractères du tableau de caractères spécifié. Un paramètre indique si l'état interne de l'encodeur doit être effacé après le calcul.

GetByteCount(ReadOnlySpan<Char>, Boolean)

En cas de substitution dans une classe dérivée, calcule le nombre d'octets produits par l'encodage d'un jeu de caractères dans l’étendue ’chars’. Un paramètre indique si l'état interne de l'encodeur doit être effacé après le calcul.

GetBytes(Char*, Int32, Byte*, Int32, Boolean)

En cas de substitution dans une classe dérivée, encode un jeu de caractères démarrant au pointeur de caractère spécifié et les caractères de la mémoire tampon interne en une séquence d'octets stockés à partir du pointeur d'octet spécifié. Un paramètre indique si l'état interne de l'encodeur doit être effacé après la conversion.

GetBytes(Char[], Int32, Int32, Byte[], Int32, Boolean)

En cas de substitution dans une classe dérivée, encode un jeu de caractères du tableau de caractères spécifié et les caractères de la mémoire tampon interne dans le tableau d'octets spécifié. Un paramètre indique si l'état interne de l'encodeur doit être effacé après la conversion.

GetBytes(ReadOnlySpan<Char>, Span<Byte>, Boolean)

En cas de substitution dans une classe dérivée, encode un jeu de caractères dans l’étendue de caractères d’entrée et tous les caractères de la mémoire tampon interne en une séquence d’octets stockés dans l’étendue d’octets en entrée. Un paramètre indique si l'état interne de l'encodeur doit être effacé après la conversion.

GetHashCode()

Fait office de fonction de hachage par défaut.

(Hérité de Object)
GetType()

Obtient le Type de l'instance actuelle.

(Hérité de Object)
MemberwiseClone()

Crée une copie superficielle du Object actuel.

(Hérité de Object)
Reset()

En cas de substitution dans une classe dérivée, redéfinit l'encodeur à son état initial.

ToString()

Retourne une chaîne qui représente l'objet actuel.

(Hérité de Object)

Méthodes d’extension

Convert(Encoder, ReadOnlySequence<Char>, IBufferWriter<Byte>, Boolean, Int64, Boolean)

Convertit ReadOnlySequence<T> en octets encodés et écrit le résultat dans writer.

Convert(Encoder, ReadOnlySpan<Char>, IBufferWriter<Byte>, Boolean, Int64, Boolean)

Convertit un ReadOnlySpan<T> en octets à l’aide de encoder et écrit le résultat dans writer.

S’applique à

Produit Versions
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

Voir aussi