Pour afficher l’article en anglais, activez la case d’option Anglais. Vous pouvez aussi afficher la version anglaise dans une fenêtre contextuelle en faisant glisser le pointeur de la souris sur le texte.
Traduction
Anglais
Cette documentation est archivée et n’est pas conservée.

Encoding.GetChars, méthode (Byte[])

Lors de la substitution dans une classe dérivée, décode tous les octets du tableau d'octets spécifié en un jeu de caractères.

Espace de noms :  System.Text
Assembly :  mscorlib (dans mscorlib.dll)

public virtual char[] GetChars(
	byte[] bytes
)

Paramètres

bytes
Type : System.Byte[]
Tableau d'octets contenant la séquence d'octets à décoder.

Valeur de retour

Type : System.Char[]
Tableau de caractères contenant les résultats du décodage de la séquence d'octets spécifiée.

ExceptionCondition
ArgumentNullException

bytes est null.

DecoderFallbackException

Un secours s'est produit (consultez Encodage de caractères dans le .NET Framework pour obtenir une explication complète)

– et –

DecoderFallback a la valeur DecoderExceptionFallback.

Encoding.GetChars obtient des caractères d'une séquence d'octets en entrée. Encoding.GetChars est différent de Decoder.GetChars parce que Encoding attend des conversions discrètes, tandis que Decoder est conçu pour plusieurs passes sur un flux d'entrée unique.

Si les données à convertir ne sont disponibles que sous la forme de blocs séquentiels (comme les données lues à partir d'un flux) ou si la quantité de données est si grande qu'elle doit être divisée en blocs plus petits, l'application doit utiliser le Decoder ou le Encoder fourni par la méthode GetDecoder ou la méthode GetEncoder, respectivement, d'une classe dérivée

Remarque   cette méthode est destinée à opérer sur des caractères Unicode, et non sur des données binaires arbitraires comme les tableaux d'octets. Si votre application a besoin d'encoder des données arbitraires en texte, elle doit utiliser un protocole tel qu'UUEncode, qui est implémenté par des méthodes telles que Convert.ToBase64CharArray.

La méthode GetCharCount détermine le nombre de caractères entraînant le décodage d'une séquence d'octets, et la méthode GetChars procède au décodage effectif. La méthode Encoding.GetChars attend des conversions discrètes, par contraste avec la méthode Decoder.GetChars, qui gère plusieurs passes sur un flux d'entrée unique.

Plusieurs versions de GetCharCount et GetChars sont prises en charge. Les éléments suivants sont quelques considérations sur la programmation pour l'utilisation de ces méthodes :

  • L'application peut devoir décoder plusieurs octets d'entrée d'une page de codes et traiter les octets à l'aide d'appels multiples. Dans ce cas, votre application doit probablement maintenir l'état entre les appels, étant donné que les séquences d'octets peuvent être interrompues en cas de traitement par lots. (Par exemple, la partie d'une séquence de déplacement ISO-2022 peut terminer un appel GetChars et continuer au début de l'appel GetChars suivant. Encoding.GetChars appellera le secours pour ces séquences incomplètes, mais Decoder se souviendra de ces séquences pour l'appel suivant.)

  • Si l'application gère les sorties de chaîne, il est recommandé d'utiliser la méthode GetString. Puisque cette méthode doit vérifier la longueur de chaîne et allouer une mémoire tampon, c'est légèrement plus lent, mais le type String résultant doit être privilégié.

  • La version d'octet de GetChars autorise certaines techniques rapides, en particulier avec les appels multiples aux grandes mémoires tampon. Toutefois, gardez à l'esprit que cette version de méthode est parfois dangereuse car des pointeurs sont requis.

  • Si votre application doit convertir une grande quantité de données, elle doit réutiliser la mémoire tampon de sortie. Dans ce cas, la version GetChars qui prend en charge les mémoires tampon de caractère de sortie est le choix le plus judicieux.

  • Envisagez d'utiliser la méthode Decoder.Convert au lieu de GetCharCount. La méthode de conversion convertit autant de données que possible, et lève une exception si la mémoire tampon de sortie est trop petite. Pour le décodage continu d'un flux de données, cette méthode est souvent le choix le plus judicieux.

L'exemple suivant code une chaîne dans un tableau d'octets, puis décode les octets dans un tableau de caractères.


using System;
using System.Text;

public class SamplesEncoding  {

   public static void Main()  {

      // Create two instances of UTF32Encoding: one with little-endian byte order and one with big-endian byte order.
      Encoding u32LE = Encoding.GetEncoding( "utf-32" );
      Encoding u32BE = Encoding.GetEncoding( "utf-32BE" );

      // Use a string containing the following characters:
      //    Latin Small Letter Z (U+007A)
      //    Latin Small Letter A (U+0061)
      //    Combining Breve (U+0306)
      //    Latin Small Letter AE With Acute (U+01FD)
      //    Greek Small Letter Beta (U+03B2)
      String myStr = "za\u0306\u01FD\u03B2";

      // Encode the string using the big-endian byte order.
      byte[] barrBE = new byte[u32BE.GetByteCount( myStr )];
      u32BE.GetBytes( myStr, 0, myStr.Length, barrBE, 0 );

      // Encode the string using the little-endian byte order.
      byte[] barrLE = new byte[u32LE.GetByteCount( myStr )];
      u32LE.GetBytes( myStr, 0, myStr.Length, barrLE, 0 );

      // Get the char counts, and decode the byte arrays.
      Console.Write( "BE array with BE encoding : " );
      PrintCountsAndChars( barrBE, u32BE );
      Console.Write( "LE array with LE encoding : " );
      PrintCountsAndChars( barrLE, u32LE );

   }


   public static void PrintCountsAndChars( byte[] bytes, Encoding enc )  {

      // Display the name of the encoding used.
      Console.Write( "{0,-25} :", enc.ToString() );

      // Display the exact character count.
      int iCC  = enc.GetCharCount( bytes );
      Console.Write( " {0,-3}", iCC );

      // Display the maximum character count.
      int iMCC = enc.GetMaxCharCount( bytes.Length );
      Console.Write( " {0,-3} :", iMCC );

      // Decode the bytes and display the characters.
      char[] chars = enc.GetChars( bytes );
      Console.WriteLine( chars );

   }

}


/* 
This code produces the following output.  The question marks take the place of characters that cannot be displayed at the console.

BE array with BE encoding : System.Text.UTF32Encoding : 5   12  :za??�
LE array with LE encoding : System.Text.UTF32Encoding : 5   12  :za??�

*/



.NET Framework

Pris en charge dans : 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Pris en charge dans : 4, 3.5 SP1

Pris en charge dans :

Windows 7, Windows Vista SP1 ou ultérieur, Windows XP SP3, Windows XP SP2 Édition x64, Windows Server 2008 (installation minimale non prise en charge), Windows Server 2008 R2 (installation minimale prise en charge avec SP1 ou version ultérieure), Windows Server 2003 SP2

Le .NET Framework ne prend pas en charge toutes les versions de chaque plateforme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise du .NET Framework.
Afficher: