UnicodeEncoding.GetByteCount Méthode

Définition

Calcule le nombre d'octets produits par l'encodage d'un jeu de caractères.

Surcharges

GetByteCount(String)

Calcule le nombre d'octets générés en codant les caractères dans la chaîne spécifiée.

GetByteCount(Char*, Int32)

Calcule le nombre d'octets produits par l'encodage d'un jeu de caractères commençant au pointeur de caractère spécifié.

GetByteCount(Char[], Int32, Int32)

Calcule le nombre d'octets produits par l'encodage d'un jeu de caractères du tableau de caractères spécifié.

GetByteCount(String)

Calcule le nombre d'octets générés en codant les caractères dans la chaîne spécifiée.

public:
 override int GetByteCount(System::String ^ s);
public override int GetByteCount (string s);
override this.GetByteCount : string -> int
Public Overrides Function GetByteCount (s As String) As Integer

Paramètres

s
String

Chaîne contenant le jeu de caractères à encoder.

Retours

Int32

Nombre d'octets produits par l'encodage des caractères spécifiés.

Exceptions

s a la valeur null.

Le nombre d’octets résultant est supérieur au nombre maximal accepté pour un entier.

La détection d’erreurs est activée et s contient une séquence de caractères non valide.

Un secours s’est produit (pour plus d’informations, consultez Codage de caractères dans .NET) -et- EncoderFallback a la valeur EncoderExceptionFallback.

Exemples

L’exemple suivant appelle les méthodes et GetByteCount(String) les GetMaxByteCount méthodes pour calculer le nombre maximal et réel d’octets requis pour encoder une chaîne. Il affiche également le nombre réel d’octets requis pour stocker un flux d’octets avec une marque d’ordre d’octet.

using System;
using System.Text;

class UTF8EncodingExample {
    public static void Main() {
        String chars = "UTF-16 Encoding Example";
        Encoding unicode = Encoding.Unicode;

        Console.WriteLine("Bytes needed to encode '{0}':", chars);
        Console.WriteLine("   Maximum:         {0}",
                          unicode.GetMaxByteCount(chars.Length));
        Console.WriteLine("   Actual:          {0}",
                          unicode.GetByteCount(chars));
        Console.WriteLine("   Actual with BOM: {0}",
                          unicode.GetByteCount(chars) + unicode.GetPreamble().Length);
    }
}
// The example displays the following output:
//       Bytes needed to encode 'UTF-16 Encoding Example':
//          Maximum:         48
//          Actual:          46
//          Actual with BOM: 48
Imports System.Text

Module Example
    Public Sub Main()
        Dim chars As String = "UTF-16 Encoding Example"
        Dim unicode As Encoding = Encoding.Unicode

        Console.WriteLine("Bytes needed to encode '{0}':", chars)
        Console.WriteLine("   Maximum:         {0}",
                          unicode.GetMaxByteCount(chars.Length))
        Console.WriteLine("   Actual:          {0}",
                          unicode.GetByteCount(chars))
        Console.WriteLine("   Actual with BOM: {0}",
                          unicode.GetByteCount(chars) + unicode.GetPreamble().Length)
    End Sub
End Module
' The example displays the following output:
'       Bytes needed to encode 'UTF-16 Encoding Example':
'          Maximum:         48
'          Actual:          46
'          Actual with BOM: 48

Remarques

Pour calculer la taille exacte du tableau requise GetBytes pour stocker les octets résultants, vous appelez la GetByteCount méthode. Pour calculer la taille maximale du tableau, vous appelez la GetMaxByteCount méthode. La GetByteCount méthode alloue généralement moins de mémoire, tandis que la GetMaxByteCount méthode s’exécute généralement plus rapidement.

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

Important

Pour vous assurer que les octets codés sont décodés correctement lorsqu’ils sont enregistrés en tant que fichier ou en tant que flux, vous pouvez préfixer un flux d’octets encodés avec un préambule. L’insertion du préambule au début d’un flux d’octets (par exemple, au début d’une série d’octets à écrire dans un fichier) est la responsabilité du développeur et le nombre d’octets du préambule n’est pas répercuté dans la valeur retournée par la GetByteCount(String) méthode.

Voir aussi

S’applique à

GetByteCount(Char*, Int32)

Important

Cette API n’est pas conforme CLS.

Calcule le nombre d'octets produits par l'encodage d'un jeu de caractères commençant au pointeur de caractère spécifié.

public:
 override int GetByteCount(char* chars, int count);
[System.CLSCompliant(false)]
public override int GetByteCount (char* chars, int count);
[System.CLSCompliant(false)]
[System.Security.SecurityCritical]
public override int GetByteCount (char* chars, int count);
[System.CLSCompliant(false)]
[System.Runtime.InteropServices.ComVisible(false)]
public override int GetByteCount (char* chars, int count);
[System.CLSCompliant(false)]
[System.Security.SecurityCritical]
[System.Runtime.InteropServices.ComVisible(false)]
public override int GetByteCount (char* chars, int count);
[<System.CLSCompliant(false)>]
override this.GetByteCount : nativeptr<char> * int -> int
[<System.CLSCompliant(false)>]
[<System.Security.SecurityCritical>]
override this.GetByteCount : nativeptr<char> * int -> int
[<System.CLSCompliant(false)>]
[<System.Runtime.InteropServices.ComVisible(false)>]
override this.GetByteCount : nativeptr<char> * int -> int
[<System.CLSCompliant(false)>]
[<System.Security.SecurityCritical>]
[<System.Runtime.InteropServices.ComVisible(false)>]
override this.GetByteCount : nativeptr<char> * int -> int

Paramètres

chars
Char*

Pointeur du premier caractère à encoder.

count
Int32

Nombre de caractères à encoder.

Retours

Int32

Nombre d'octets produits par l'encodage des caractères spécifiés.

Attributs

Exceptions

chars a la valeur null.

count est inférieur à zéro.

  • ou - Le nombre d’octets résultant est supérieur au nombre maximal accepté pour un entier.

La détection d'erreurs est activée et chars contient une séquence de caractères non valide.

Un secours s’est produit (pour plus d’informations, consultez Codage de caractères dans .NET) -et- EncoderFallback a la valeur EncoderExceptionFallback.

Remarques

Pour calculer la taille exacte du tableau qui GetBytes nécessite de stocker les octets résultants, vous appelez la GetByteCount méthode. Pour calculer la taille maximale du tableau, vous appelez la GetMaxByteCount méthode. La GetByteCount méthode alloue généralement moins de mémoire, tandis que la GetMaxByteCount méthode s’exécute généralement plus rapidement.

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

Important

Pour vous assurer que les octets codés sont décodés correctement lorsqu’ils sont enregistrés en tant que fichier ou en tant que flux, vous pouvez préfixer un flux d’octets encodés avec un préambule. L’insertion du préambule au début d’un flux d’octets (par exemple, au début d’une série d’octets à écrire dans un fichier) est la responsabilité du développeur et le nombre d’octets du préambule n’est pas répercuté dans la valeur retournée par la GetByteCount méthode.

Voir aussi

S’applique à

GetByteCount(Char[], Int32, Int32)

Calcule le nombre d'octets produits par l'encodage d'un jeu de caractères du tableau de caractères spécifié.

public:
 override int GetByteCount(cli::array <char> ^ chars, int index, int count);
public override int GetByteCount (char[] chars, int index, int count);
override this.GetByteCount : char[] * int * int -> int
Public Overrides Function GetByteCount (chars As Char(), index As Integer, count As Integer) As Integer

Paramètres

chars
Char[]

Tableau de caractères contenant le jeu de caractères à encoder.

index
Int32

Index du premier caractère à encoder.

count
Int32

Nombre de caractères à encoder.

Retours

Int32

Nombre d'octets produits par l'encodage des caractères spécifiés.

Exceptions

chars a la valeur null (Nothing).

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

  • ou - index et count ne désignent pas une plage valide dans chars.

  • ou - Le nombre d’octets résultant est supérieur au nombre maximal accepté pour un entier.

La détection d’erreurs est activée et chars contient une séquence de caractères non valide.

Un secours s’est produit (pour plus d’informations, consultez Codage de caractères dans .NET) -et- EncoderFallback a la valeur EncoderExceptionFallback.

Exemples

L’exemple suivant remplit un tableau avec des caractères majuscules et minuscules latins et appelle la GetByteCount(Char[], Int32, Int32) méthode pour déterminer le nombre d’octets nécessaires pour encoder les caractères minuscules latins. Elle affiche ensuite ces informations ainsi que le nombre total d’octets nécessaires si une marque d’ordre d’octet est ajoutée. Il compare ce nombre à la valeur retournée par la GetMaxByteCount méthode, ce qui indique le nombre maximal d’octets nécessaires pour encoder les caractères minuscules latins. L’exemple suivant remplit un tableau avec une combinaison de caractères grecs et cyrilliques et appelle la GetByteCount(Char[], Int32, Int32) méthode pour déterminer le nombre d’octets nécessaires pour encoder les caractères cyrilliques. Elle affiche ensuite ces informations ainsi que le nombre total d’octets nécessaires si une marque d’ordre d’octet est ajoutée. Il compare ce nombre à la valeur retournée par la GetMaxByteCount méthode, ce qui indique le nombre maximal d’octets nécessaires pour encoder les caractères cyrilliques.

using System;
using System.Text;

public class Example
{
   public static void Main()
   {
      int uppercaseStart = 0x0041;
      int uppercaseEnd = 0x005a;
      int lowercaseStart = 0x0061;
      int lowercaseEnd = 0x007a;
      // Instantiate a UTF8 encoding object with BOM support.
      Encoding unicode = Encoding.Unicode;

      // Populate array with characters.
      char[] chars = new char[lowercaseEnd - lowercaseStart + uppercaseEnd - uppercaseStart + 2];
      int index = 0;
      for (int ctr = uppercaseStart; ctr <= uppercaseEnd; ctr++) {
         chars[index] = (char)ctr;
         index++;
      }
      for (int ctr = lowercaseStart; ctr <= lowercaseEnd; ctr++) {
         chars[index] = (char)ctr;
         index++;
      }

      // Display the bytes needed for the lowercase characters.
      Console.WriteLine("Bytes needed for lowercase Latin characters:");
      Console.WriteLine("   Maximum:         {0,5:N0}",
                        unicode.GetMaxByteCount(lowercaseEnd - lowercaseStart + 1));
      Console.WriteLine("   Actual:          {0,5:N0}",
                        unicode.GetByteCount(chars, uppercaseEnd - uppercaseStart + 1,
                                          lowercaseEnd - lowercaseStart + 1));
      Console.WriteLine("   Actual with BOM: {0,5:N0}",
                        unicode.GetByteCount(chars, uppercaseEnd - uppercaseStart + 1,
                                          lowercaseEnd - lowercaseStart + 1) +
                                          unicode.GetPreamble().Length);
   }
}
// The example displays the following output:
//       Bytes needed for lowercase Latin characters:
//          Maximum:            54
//          Actual:             52
//          Actual with BOM:    54
Imports System.Text

Module Example
   Public Sub Main()
      Dim uppercaseStart As Integer = &h0041
      Dim uppercaseEnd As Integer = &h005a
      Dim lowercaseStart As Integer = &h0061
      Dim lowercaseEnd As Integer = &h007a
      ' Instantiate a UTF8 encoding object with BOM support.
      Dim unicode As Encoding = Encoding.Unicode
      
      ' Populate array with characters.
      Dim chars(lowercaseEnd - lowercaseStart + uppercaseEnd - uppercaseStart + 1) As Char
      Dim index As Integer = 0
      For ctr As Integer = uppercaseStart To uppercaseEnd
         chars(index) = ChrW(ctr)
         index += 1
      Next
      For ctr As Integer = lowercaseStart To lowercaseEnd
         chars(index) = ChrW(ctr)
         index += 1
      Next

      ' Display the bytes needed for the lowercase characters.
        Console.WriteLine("Bytes needed for lowercase Latin characters:")
        Console.WriteLine("   Maximum:         {0,5:N0}",
                          unicode.GetMaxByteCount(lowercaseEnd - lowercaseStart + 1))
        Console.WriteLine("   Actual:          {0,5:N0}",
                          unicode.GetByteCount(chars, uppercaseEnd - uppercaseStart + 1,
                                            lowercaseEnd - lowercaseStart + 1))
        Console.WriteLine("   Actual with BOM: {0,5:N0}",
                          unicode.GetByteCount(chars, uppercaseEnd - uppercaseStart + 1,
                                            lowercaseEnd - lowercaseStart + 1) +
                                            unicode.GetPreamble().Length)
   End Sub
End Module
' The example displays the following output:
'       Bytes needed for lowercase Latin characters:
'          Maximum:            54
'          Actual:             52
'          Actual with BOM:    54

Remarques

Pour calculer la taille exacte du tableau requise GetBytes pour stocker les octets résultants, l’application utilise GetByteCount. Pour calculer la taille maximale du tableau, vous appelez la GetMaxByteCount méthode. La GetByteCount méthode alloue généralement moins de mémoire, tandis que la GetMaxByteCount méthode s’exécute généralement plus rapidement.

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

Pour vous assurer que les octets codés sont décodés correctement lorsqu’ils sont enregistrés en tant que fichier ou en tant que flux, vous pouvez préfixer un flux d’octets encodés avec un préambule. L’insertion du préambule au début d’un flux d’octets (par exemple, au début d’une série d’octets à écrire dans un fichier) est la responsabilité du développeur et le nombre d’octets dans le préambule n’est pas répercuté dans la valeur retournée par la GetByteCount(Char[], Int32, Int32) méthode.

Voir aussi

S’applique à