Cette documentation est archivée et n’est pas conservée.

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

Mise à jour : novembre 2007

En cas de substitution dans une classe dérivée, décode une séquence d'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,
	int index,
	int count
)
public char[] GetChars(
	byte[] bytes,
	int index,
	int count
)
public function GetChars(
	bytes : byte[], 
	index : int, 
	count : int
) : char[]

Paramètres

bytes
Type : System.Byte[]
index
Type : System.Int32
count
Type : System.Int32

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.

ArgumentOutOfRangeException

index ou count est inférieur à zéro.

– ou –

index et count ne désignent pas une plage valide de bytes.

DecoderFallbackException

Un secours s'est produit (consultez Fonctionnement des codages pour obtenir une explication complète)

– et –

DecoderFallback a la valeur DecoderExceptionFallback.

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 de coder des données arbitraires en texte, elle doit utiliser un protocole tel qu'UUEncode, qui est implémenté par des méthodes telles que ConvertToBase64CharArray().

Pour en savoir plus sur les considérations de programmation pour l'utilisation de cette méthode, consultez la description de classe Encoding.

L'exemple de code suivant code une chaîne en un tableau d'octets, puis décode une plage des octets en 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, decode eight bytes starting at index 0,
      // and print out the counts and the resulting bytes.
      Console.Write( "BE array with BE encoding : " );
      PrintCountsAndChars( barrBE, 0, 8, u32BE );
      Console.Write( "LE array with LE encoding : " );
      PrintCountsAndChars( barrLE, 0, 8, u32LE );

   }


   public static void PrintCountsAndChars( byte[] bytes, int index, int count, 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, index, count );
      Console.Write( " {0,-3}", iCC );

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

      // Decode the bytes and display the characters.
      char[] chars = enc.GetChars( bytes, index, count );

      // The following is an alternative way to decode the bytes:
      // char[] chars = new char[iCC];
      // enc.GetChars( bytes, index, count, chars, 0 );

      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 : 2   6   :za
LE array with LE encoding : System.Text.UTF32Encoding : 2   6   :za

*/



import System.*;
import System.Text.*;

public class SamplesEncoding
{
    public static void main(String[] args)
    {
        // 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.
        ubyte barrBE[] = new ubyte[u32BE.GetByteCount(myStr)];
        u32BE.GetBytes(myStr, 0, myStr.get_Length(), barrBE, 0);

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

        // Get the char counts, decode eight bytes starting at index 0,
        // and print out the counts and the resulting bytes.
        Console.Write("BE array with BE encoding : ");
        PrintCountsAndChars(barrBE, 0, 8, u32BE);
        Console.Write("LE array with LE encoding : ");
        PrintCountsAndChars(barrLE, 0, 8, u32LE);
    } //main

    public static void PrintCountsAndChars(ubyte bytes[], 
                    int index, int count, 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, index, count);
        Console.Write(" {0,-3}", String.valueOf(iCC));

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

        // Decode the bytes and display the characters.
        char chars[] = enc.GetChars(bytes, index, count);

        // The following is an alternative way to decode the bytes:
        // char[] chars = new char[iCC];
        // enc.GetChars( bytes, index, count, chars, 0 );
        Console.WriteLine(chars);
    } //PrintCountsAndChars
} //SamplesEncoding

/* 
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 : 2   6   :za
LE array with LE encoding : System.Text.UTF32Encoding : 2   6   :za

*/



Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professionnel Édition x64, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Windows CE, Windows Mobile pour Smartphone, Windows Mobile pour Pocket PC, Xbox 360

Le .NET Framework et le .NET Compact Framework ne prennent pas en charge toutes les versions de chaque plateforme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise du .NET Framework.

.NET Framework

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

.NET Compact Framework

Pris en charge dans : 3.5, 2.0, 1.0

XNA Framework

Pris en charge dans : 2.0, 1.0
Afficher: