Partage via


UTF8Encoding.GetString(Byte[], Int32, Int32) Méthode

Définition

Décode une plage d'octets d'un tableau d'octets en une chaîne.

public:
 override System::String ^ GetString(cli::array <System::Byte> ^ bytes, int index, int count);
public override string GetString (byte[] bytes, int index, int count);
[System.Runtime.InteropServices.ComVisible(false)]
public override string GetString (byte[] bytes, int index, int count);
override this.GetString : byte[] * int * int -> string
[<System.Runtime.InteropServices.ComVisible(false)>]
override this.GetString : byte[] * int * int -> string
Public Overrides Function GetString (bytes As Byte(), index As Integer, count As Integer) As String

Paramètres

bytes
Byte[]

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

index
Int32

Index du premier octet à décoder.

count
Int32

Nombre d'octets à décoder.

Retours

String contenant les résultats du décodage de la séquence d'octets spécifiée.

Attributs

Exceptions

bytes a la valeur null.

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

- ou -

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

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

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 initialise un tableau en appelant la méthode pour déterminer exactement le GetByteCount nombre d’octets requis pour une chaîne encodée, puis en ajoutant la taille de la marque d’ordre d’octet (BOM). L’exemple appelle ensuite la GetPreamble méthode pour stocker la nomenclature dans le tableau avant d’appeler la GetBytes méthode pour stocker les octets codés dans le tableau. L’exemple appelle ensuite la GetString méthode pour décoder la chaîne.

using System;
using System.Text;

public class Example
{
   public static void Main()
   {
      UTF8Encoding utf8 = new UTF8Encoding(true, true);

      String s = "It was the best of times, it was the worst of times...";

      // We need to dimension the array, since we'll populate it with 2 method calls.
      Byte[] bytes = new Byte[utf8.GetByteCount(s) + utf8.GetPreamble().Length];
      // Encode the string.
      Array.Copy(utf8.GetPreamble(), bytes, utf8.GetPreamble().Length);
      utf8.GetBytes(s, 0, s.Length, bytes, utf8.GetPreamble().Length);

      // Decode the byte array.
      String s2 = utf8.GetString(bytes, 0, bytes.Length);
      Console.WriteLine(s2);
   }
}
// The example displays the following output:
//        ?It was the best of times, it was the worst of times...
Imports System.Text

Module Example
   Public Sub Main()
      Dim utf8 As New UTF8Encoding(True, True)

      Dim s As String = "It was the best of times, it was the worst of times..."

      ' We need to dimension the array, since we'll populate it with 2 method calls.
      Dim bytes(utf8.GetByteCount(s) + utf8.GetPreamble().Length - 1) As Byte
      ' Encode the string.
      Array.Copy(utf8.GetPreamble(), bytes, utf8.GetPreamble().Length)
      utf8.GetBytes(s, 0, s.Length, bytes, utf8.GetPreamble().Length)

      ' Decode the byte array.
      Dim s2 As String = utf8.GetString(bytes, 0, bytes.Length)
      Console.WriteLine(s2)
   End Sub
End Module
' The example displays the following output:
'       ?It was the best of times, it was the worst of times...

Notez que dans ce cas, la chaîne décodée diffère de la chaîne d’origine, car elle commence par une marque d’ordre d’octet 16 bits U+FFFD. Cela signifie que les deux chaînes seront comparées comme étant inégales, et que si la chaîne est en sortie, la nomenclature sera affichée en tant que caractère de remplacement « ? ». Pour supprimer la nomenclature au début de la chaîne, vous pouvez appeler la String.TrimStart méthode .

Remarques

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’octet (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 respectivement le Decoder ou fourni Encoder par la GetDecoder méthode ou la GetEncoder méthode.

S’applique à

Voir aussi