Partager via


UTF8Encoding.GetByteCount Méthode

Définition

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

Surcharges

GetByteCount(ReadOnlySpan<Char>)

Calcule le nombre d’octets générés par l’encodage de l’étendue de caractères spécifiée.

GetByteCount(String)

Calcule le nombre d'octets générés en encodant les caractères dans le String spécifié.

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(ReadOnlySpan<Char>)

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

Calcule le nombre d’octets générés par l’encodage de l’étendue de caractères spécifiée.

public:
 override int GetByteCount(ReadOnlySpan<char> chars);
public override int GetByteCount (ReadOnlySpan<char> chars);
override this.GetByteCount : ReadOnlySpan<char> -> int
Public Overrides Function GetByteCount (chars As ReadOnlySpan(Of Char)) As Integer

Paramètres

chars
ReadOnlySpan<Char>

Étendue contenant le jeu de caractères à encoder.

Retours

Nombre d’octets produits par l'encodage de l’étendue de caractères spécifiée.

Exceptions

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 Encodage de caractères dans .NET).

-et-

EncoderFallback a la valeur EncoderExceptionFallback.

Remarques

Pour calculer la taille exacte requise par GetBytes pour stocker les octets résultants, vous appelez la GetByteCount méthode . Pour calculer la taille maximale, 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’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.

Pour vous assurer que les octets encodés sont correctement décodés lorsqu’ils sont enregistrés en tant que fichier ou en tant que flux, vous pouvez précéder 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 de la responsabilité du développeur, et le nombre d’octets dans le préambule n’est pas reflété dans la valeur retournée par la GetByteCount méthode.

S’applique à

GetByteCount(String)

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

Calcule le nombre d'octets générés en encodant les caractères dans le String spécifié.

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

Paramètres

chars
String

String contenant le jeu de caractères à encoder.

Retours

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

Exceptions

chars 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 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 appelle les GetMaxByteCount méthodes et GetByteCount(String) 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 de commande d’octets.

using System;
using System.Text;

class UTF8EncodingExample {
    public static void Main() {
        String chars = "UTF8 Encoding Example";
        Encoding utf8 = Encoding.UTF8;

        Console.WriteLine("Bytes needed to encode '{0}':", chars);
        Console.WriteLine("   Maximum:         {0}",
                          utf8.GetMaxByteCount(chars.Length));
        Console.WriteLine("   Actual:          {0}",
                          utf8.GetByteCount(chars));
        Console.WriteLine("   Actual with BOM: {0}",
                          utf8.GetByteCount(chars) + utf8.GetPreamble().Length);
    }
}
// The example displays the following output:
//       Bytes needed to encode 'UTF8 Encoding Example':
//          Maximum:         66
//          Actual:          21
//          Actual with BOM: 24
Imports System.Text

Module Example
    Public Sub Main()
        Dim chars As String = "UTF8 Encoding Example"
        Dim utf8 As Encoding = Encoding.UTF8

        Console.WriteLine("Bytes needed to encode '{0}':", chars)
        Console.WriteLine("   Maximum:         {0}",
                          utf8.GetMaxByteCount(chars.Length))
        Console.WriteLine("   Actual:          {0}",
                          utf8.GetByteCount(chars))
        Console.WriteLine("   Actual with BOM: {0}",
                          utf8.GetByteCount(chars) + utf8.GetPreamble().Length)
    End Sub
End Module
' The example displays the following output:
'       Bytes needed to encode 'UTF8 Encoding Example':
'          Maximum:         66
'          Actual:          21
'          Actual with BOM: 24

Remarques

Pour calculer la taille exacte du tableau requise pour GetBytes 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’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.

Pour vous assurer que les octets encodés sont correctement décodés lorsqu’ils sont enregistrés en tant que fichier ou en tant que flux, vous pouvez précéder 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 de la responsabilité du développeur, et le nombre d’octets dans le préambule n’est pas reflété dans la valeur retournée par la GetByteCount méthode.

Voir aussi

S’applique à

GetByteCount(Char*, Int32)

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

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)]
[System.Security.SecurityCritical]
public override int GetByteCount (char* chars, int count);
[System.CLSCompliant(false)]
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)>]
[<System.Security.SecurityCritical>]
override this.GetByteCount : nativeptr<char> * int -> int
[<System.CLSCompliant(false)>]
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

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.

Une procédure de secours a eu lieu (consultez Encodage de caractères au format .NET pour obtenir une explication complète).

-et-

EncoderFallback a la valeur EncoderExceptionFallback.

Remarques

Pour calculer la taille exacte du tableau requise par la GetBytes méthode 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’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.

Pour vous assurer que les octets encodés sont correctement décodés lorsqu’ils sont enregistrés en tant que fichier ou en tant que flux, vous pouvez précéder 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 de la responsabilité du développeur, et le nombre d’octets dans le préambule n’est pas reflété dans la valeur retournée par la GetByteCount méthode.

Voir aussi

S’applique à

GetByteCount(Char[], Int32, Int32)

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

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

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

Exceptions

chars a la valeur null.

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-

La propriété EncoderFallback est définie sur EncoderExceptionFallback.

Exemples

L’exemple suivant remplit un tableau avec des majuscules et des 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. Il 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 méthode, qui indique le GetMaxByteCount nombre maximal d’octets nécessaires pour encoder les caractères minuscules latins.

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 utf8 = new UTF8Encoding(true);

      // 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}",
                        utf8.GetMaxByteCount(lowercaseEnd - lowercaseStart + 1));
      Console.WriteLine("   Actual:          {0,5:N0}",
                        utf8.GetByteCount(chars, uppercaseEnd - uppercaseStart + 1,
                                          lowercaseEnd - lowercaseStart + 1));
      Console.WriteLine("   Actual with BOM: {0,5:N0}",
                        utf8.GetByteCount(chars, uppercaseEnd - uppercaseStart + 1,
                                          lowercaseEnd - lowercaseStart + 1) +
                                          utf8.GetPreamble().Length);
   }
}
// The example displays the following output:
//       Bytes needed for lowercase Latin characters:
//          Maximum:            81
//          Actual:             26
//          Actual with BOM:    29
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 utf8 As New UTF8Encoding(True)
      
      ' 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}",
                          utf8.GetMaxByteCount(lowercaseEnd - lowercaseStart + 1))
        Console.WriteLine("   Actual:          {0,5:N0}",
                          utf8.GetByteCount(chars, uppercaseEnd - uppercaseStart + 1,
                                            lowercaseEnd - lowercaseStart + 1))
        Console.WriteLine("   Actual with BOM: {0,5:N0}",
                          utf8.GetByteCount(chars, uppercaseEnd - uppercaseStart + 1,
                                            lowercaseEnd - lowercaseStart + 1) +
                                            utf8.GetPreamble().Length)
   End Sub
End Module
' The example displays the following output:
'       Bytes needed for lowercase Latin characters:
'          Maximum:            81
'          Actual:             26
'          Actual with BOM:    29

Remarques

Pour calculer la taille exacte du tableau nécessaire GetBytes pour stocker les octets résultants, vous appelez la méthode uses 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’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.

Pour vous assurer que les octets encodés sont correctement décodés lorsqu’ils sont enregistrés en tant que fichier ou en tant que flux, vous pouvez précéder 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 de la responsabilité du développeur, et le nombre d’octets dans le préambule n’est pas reflété dans la valeur retournée par la GetByteCount méthode.

Voir aussi

S’applique à