Partager via


UTF8Encoding.GetChars Méthode

Définition

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

Surcharges

GetChars(ReadOnlySpan<Byte>, Span<Char>)

Décode l’étendue d’octets spécifiée dans l’étendue de caractères spécifiée.

GetChars(Byte*, Int32, Char*, Int32)

Décode une séquence d'octets commençant au pointeur d'octet spécifié en un jeu de caractères qui sera stocké à partir du pointeur de caractère spécifié.

GetChars(Byte[], Int32, Int32, Char[], Int32)

Décode une séquence d'octets du tableau d'octets spécifié dans le tableau de caractères spécifié.

GetChars(ReadOnlySpan<Byte>, Span<Char>)

Source:
UTF8Encoding.cs
Source:
UTF8Encoding.cs
Source:
UTF8Encoding.cs

Décode l’étendue d’octets spécifiée dans l’étendue de caractères spécifiée.

public:
 override int GetChars(ReadOnlySpan<System::Byte> bytes, Span<char> chars);
public override int GetChars (ReadOnlySpan<byte> bytes, Span<char> chars);
override this.GetChars : ReadOnlySpan<byte> * Span<char> -> int
Public Overrides Function GetChars (bytes As ReadOnlySpan(Of Byte), chars As Span(Of Char)) As Integer

Paramètres

bytes
ReadOnlySpan<Byte>

Étendue contenant les octets à décoder.

chars
Span<Char>

Étendue pour contenir le jeu de caractères obtenu.

Retours

Nombre réel de caractères écrits dans chars.

Remarques

Pour calculer la taille exacte requise par GetChars pour stocker les caractères résultants, appelez la GetCharCount méthode . Pour calculer la taille maximale, appelez la GetMaxCharCount méthode . La GetCharCount méthode alloue généralement moins de mémoire, tandis que la GetMaxCharCount méthode s’exécute généralement plus rapidement.

Avec la détection d’erreur, une séquence non valide entraîne la levée d’une ArgumentException exception par cette méthode. Sans détection d’erreur, les séquences non valides sont ignorées et aucune exception n’est levée.

Si l’ensemble d’octets à décoder inclut la marque d’ordre d’octet (BOM) et que l’étendue d’octets a été retournée par une méthode de type non compatible avec la nomenclature, le caractère U+FFFE est inclus dans l’étendue des caractères retournés par cette méthode. Vous pouvez le supprimer en appelant la String.TrimStart méthode .

Les données à convertir, telles que les données lues à partir d’un flux, peuvent être disponibles uniquement dans des blocs séquentiels. Dans ce cas, ou si la quantité de données est telle qu’elle doit être divisée en blocs plus petits, utilisez l’objet Decoder ou Encoder fourni par la GetDecoder méthode ou GetEncoder , respectivement.

S’applique à

GetChars(Byte*, Int32, Char*, Int32)

Source:
UTF8Encoding.cs
Source:
UTF8Encoding.cs
Source:
UTF8Encoding.cs

Important

Cette API n’est pas conforme CLS.

Décode une séquence d'octets commençant au pointeur d'octet spécifié en un jeu de caractères qui sera stocké à partir du pointeur de caractère spécifié.

public:
 override int GetChars(System::Byte* bytes, int byteCount, char* chars, int charCount);
[System.CLSCompliant(false)]
[System.Security.SecurityCritical]
public override int GetChars (byte* bytes, int byteCount, char* chars, int charCount);
[System.CLSCompliant(false)]
public override int GetChars (byte* bytes, int byteCount, char* chars, int charCount);
[System.CLSCompliant(false)]
[System.Runtime.InteropServices.ComVisible(false)]
public override int GetChars (byte* bytes, int byteCount, char* chars, int charCount);
[System.CLSCompliant(false)]
[System.Security.SecurityCritical]
[System.Runtime.InteropServices.ComVisible(false)]
public override int GetChars (byte* bytes, int byteCount, char* chars, int charCount);
[<System.CLSCompliant(false)>]
[<System.Security.SecurityCritical>]
override this.GetChars : nativeptr<byte> * int * nativeptr<char> * int -> int
[<System.CLSCompliant(false)>]
override this.GetChars : nativeptr<byte> * int * nativeptr<char> * int -> int
[<System.CLSCompliant(false)>]
[<System.Runtime.InteropServices.ComVisible(false)>]
override this.GetChars : nativeptr<byte> * int * nativeptr<char> * int -> int
[<System.CLSCompliant(false)>]
[<System.Security.SecurityCritical>]
[<System.Runtime.InteropServices.ComVisible(false)>]
override this.GetChars : nativeptr<byte> * int * nativeptr<char> * int -> int

Paramètres

bytes
Byte*

Pointeur du premier octet à décoder.

byteCount
Int32

Nombre d'octets à décoder.

chars
Char*

Pointeur de l'emplacement où commencer l'écriture du jeu de caractères obtenu.

charCount
Int32

Nombre maximal de caractères à écrire.

Retours

Nombre réel de caractères écrits à l'emplacement indiqué par chars.

Attributs

Exceptions

bytes a la valeur null.

-ou-

chars a la valeur null.

byteCount ou charCount est inférieur à zéro.

La détection d’erreurs est activée et bytes contient une séquence d’octets non valide.

- ou -

charCount est inférieur au nombre de caractères obtenus.

Un secours s’est produit (pour plus d’informations, consultez Codage de caractères dans .NET)

-et-

DecoderFallback a la valeur DecoderExceptionFallback.

Remarques

Pour calculer la taille exacte du tableau requise pour GetChars stocker les caractères résultants, appelez la GetCharCount méthode . Pour calculer la taille maximale du tableau, appelez la GetMaxCharCount méthode. La GetCharCount méthode alloue généralement moins de mémoire, tandis que la GetMaxCharCount méthode s’exécute généralement plus rapidement.

Avec la détection d’erreur, une séquence non valide entraîne la levée d’une ArgumentException exception par cette méthode. Sans détection d’erreur, les séquences non valides sont ignorées et aucune exception n’est levée.

Si la plage d’octets à décoder inclut la marque d’ordre d’octets (BOM) et que le tableau d’octets a été retourné par une méthode de type non compatible boM, le caractère U+FFFE est inclus dans le tableau de caractères retourné par cette méthode. Vous pouvez le supprimer en appelant la String.TrimStart méthode .

Les données à convertir, telles que les données lues à partir d’un flux, peuvent être disponibles uniquement dans des blocs séquentiels. Dans ce cas, ou si la quantité de données est telle qu’elle doit être divisée en blocs plus petits, utilisez l’objet Decoder ou Encoder fourni par la GetDecoder méthode ou GetEncoder , respectivement.

Voir aussi

S’applique à

GetChars(Byte[], Int32, Int32, Char[], Int32)

Source:
UTF8Encoding.cs
Source:
UTF8Encoding.cs
Source:
UTF8Encoding.cs

Décode une séquence d'octets du tableau d'octets spécifié dans le tableau de caractères spécifié.

public:
 override int GetChars(cli::array <System::Byte> ^ bytes, int byteIndex, int byteCount, cli::array <char> ^ chars, int charIndex);
public override int GetChars (byte[] bytes, int byteIndex, int byteCount, char[] chars, int charIndex);
override this.GetChars : byte[] * int * int * char[] * int -> int
Public Overrides Function GetChars (bytes As Byte(), byteIndex As Integer, byteCount As Integer, chars As Char(), charIndex As Integer) As Integer

Paramètres

bytes
Byte[]

Tableau d'octets contenant la séquence d'octets à décoder.

byteIndex
Int32

Index du premier octet à décoder.

byteCount
Int32

Nombre d'octets à décoder.

chars
Char[]

Tableau de caractères destiné à contenir le jeu de caractères obtenu.

charIndex
Int32

Index auquel commencer l'écriture du jeu de caractères obtenu.

Retours

Nombre réel de caractères écrits dans chars.

Exceptions

bytes a la valeur null.

-ou-

chars a la valeur null.

byteIndex, byteCount ou charIndex est inférieur à zéro.

- ou -

byteindex et byteCount ne désignent pas une plage valide dans bytes.

- ou -

charIndex n'est pas un index valide dans chars.

La détection d’erreurs est activée et bytes contient une séquence d’octets non valide.

- ou -

chars ne possède pas une capacité suffisante entre charIndex et la fin du tableau pour prendre en charge les caractères obtenus.

Un secours s’est produit (pour plus d’informations, consultez Codage de caractères dans .NET)

-et-

DecoderFallback a la valeur DecoderExceptionFallback.

Exemples

L’exemple suivant utilise la GetChars méthode pour décoder une plage d’éléments dans un tableau d’octets et stocker le résultat dans un tableau de caractères.

using namespace System;
using namespace System::Text;
using namespace System::Collections;
int main()
{
   array<Char>^chars;
   array<Byte>^bytes = {85,84,70,56,32,69,110,99,111,100,105,110,103,32,69,120,97,109,112,108,101};
   UTF8Encoding^ utf8 = gcnew UTF8Encoding;
   int charCount = utf8->GetCharCount( bytes, 2, 13 );
   chars = gcnew array<Char>(charCount);
   int charsDecodedCount = utf8->GetChars( bytes, 2, 13, chars, 0 );
   Console::WriteLine( "{0} characters used to decode bytes.", charsDecodedCount );
   Console::Write( "Decoded chars: " );
   IEnumerator^ myEnum = chars->GetEnumerator();
   while ( myEnum->MoveNext() )
   {
      Char c = safe_cast<Char>(myEnum->Current);
      Console::Write( "[{0}]", c.ToString() );
   }

   Console::WriteLine();
}
using System;
using System.Text;

class UTF8EncodingExample {
    public static void Main() {
        Char[] chars;
        Byte[] bytes = new Byte[] {
             85,  84,  70,  56,  32,  69, 110,
             99, 111, 100, 105, 110, 103,  32,
             69, 120,  97, 109, 112, 108, 101
        };

        UTF8Encoding utf8 = new UTF8Encoding();

        int charCount = utf8.GetCharCount(bytes, 2, 13);
        chars = new Char[charCount];
        int charsDecodedCount = utf8.GetChars(bytes, 2, 13, chars, 0);

        Console.WriteLine(
            "{0} characters used to decode bytes.", charsDecodedCount
        );

        Console.Write("Decoded chars: ");
        foreach (Char c in chars) {
            Console.Write("[{0}]", c);
        }
        Console.WriteLine();
    }
}
Imports System.Text

Class UTF8EncodingExample
    
    Public Shared Sub Main()
        Dim chars() As Char
        Dim bytes() As Byte = { _
            85,  84,  70,  56,  32,  69, 110, _
            99, 111, 100, 105, 110, 103,  32, _
            69, 120,  97, 109, 112, 108, 101 _
        }
        
        Dim utf8 As New UTF8Encoding()
        
        Dim charCount As Integer = utf8.GetCharCount(bytes, 2, 13)
        chars = New Char(charCount - 1) {}
        Dim charsDecodedCount As Integer = utf8.GetChars(bytes, 2, 13, chars, 0)
        
        Console.WriteLine("{0} characters used to decode bytes.", charsDecodedCount)
        
        Console.Write("Decoded chars: ")
        Dim c As Char
        For Each c In  chars
            Console.Write("[{0}]", c)
        Next c
        Console.WriteLine()
    End Sub
End Class

Remarques

Pour calculer la taille exacte du tableau requise pour GetChars stocker les caractères résultants, appelez la GetCharCount méthode . Pour calculer la taille maximale du tableau, appelez la GetMaxCharCount méthode. La GetCharCount méthode alloue généralement moins de mémoire, tandis que la GetMaxCharCount méthode s’exécute généralement plus rapidement.

Avec la détection d’erreur, une séquence non valide entraîne la levée d’une ArgumentException exception par cette méthode. Sans détection d’erreur, les séquences non valides sont ignorées et aucune exception n’est levée.

Si la plage d’octets à décoder inclut la marque d’ordre d’octets (BOM) et que le tableau d’octets a été retourné par une méthode de type non compatible boM, le caractère U+FFFE est inclus dans le tableau de caractères retourné par cette méthode. Vous pouvez le supprimer en appelant la String.TrimStart méthode .

Les données à convertir, telles que les données lues à partir d’un flux, peuvent être disponibles uniquement dans des blocs séquentiels. Dans ce cas, ou si la quantité de données est tellement importante qu’elle doit être divisée en blocs plus petits, utilisez respectivement le DecoderEncoder ou fourni par la GetDecoder méthode ou la GetEncoder méthode.

Voir aussi

S’applique à