Encoding.GetString Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
En cas de substitution dans une classe dérivée, décode une séquence d’octets dans une chaîne.
Surcharges
| Nom | Description |
|---|---|
| GetString(Byte[], Int32, Int32) |
En cas de substitution dans une classe dérivée, décode une séquence d’octets du tableau d’octets spécifié dans une chaîne. |
| GetString(Byte*, Int32) |
En cas de substitution dans une classe dérivée, décode un nombre spécifié d’octets à partir d’une adresse spécifiée dans une chaîne. |
| GetString(Byte[]) |
En cas de substitution dans une classe dérivée, décode tous les octets du tableau d’octets spécifié dans une chaîne. |
| GetString(ReadOnlySpan<Byte>) |
En cas de substitution dans une classe dérivée, décode tous les octets de l’étendue d’octets spécifiée dans une chaîne. |
GetString(Byte[], Int32, Int32)
En cas de substitution dans une classe dérivée, décode une séquence d’octets du tableau d’octets spécifié dans une chaîne.
public:
virtual System::String ^ GetString(cli::array <System::Byte> ^ bytes, int index, int count);
public virtual string GetString(byte[] bytes, int index, int count);
abstract member GetString : byte[] * int * int -> string
override this.GetString : byte[] * int * int -> string
Public Overridable 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
Chaîne qui contient les résultats du décodage de la séquence spécifiée d’octets.
Exceptions
Le tableau d’octets contient des points de code Unicode non valides.
bytes a la valeur null.
index ou count est inférieur à zéro.
-ou-
index et count ne désignent pas une plage valide en bytes.
Un secours s’est produit (pour plus d’informations, consultez Encodage de caractères dans .NET)
-et-
DecoderFallback a la valeur DecoderExceptionFallback.
Exemples
L’exemple suivant lit une chaîne encodée UTF-8 à partir d’un fichier binaire représenté par un FileStream objet. Pour les fichiers inférieurs à 2 048 octets, il lit le contenu du fichier entier dans un tableau d’octets et appelle la GetString(Byte[], Int32, Int32) méthode pour effectuer le décodage. Pour les fichiers plus volumineux, il lit 2 048 octets à la fois dans un tableau d’octets, appelle la Decoder.GetCharCount(Byte[], Int32, Int32) méthode pour déterminer le nombre de caractères contenus dans le tableau, puis appelle la Decoder.GetChars(Byte[], Int32, Int32, Char[], Int32) méthode pour effectuer le décodage.
using System;
using System.IO;
using System.Text;
public class Example
{
const int MAX_BUFFER_SIZE = 2048;
static Encoding enc8 = Encoding.UTF8;
static byte[] bytes = new byte[MAX_BUFFER_SIZE];
public static void Main()
{
FileStream fStream = new FileStream(@".\Utf8Example.txt", FileMode.Open);
string contents = null;
// If file size is small, read in a single operation.
if (fStream.Length <= MAX_BUFFER_SIZE) {
int bytesRead = fStream.Read(bytes, 0, bytes.Length);
contents = enc8.GetString(bytes, 0, bytesRead);
}
// If file size exceeds buffer size, perform multiple reads.
else {
contents = ReadFromBuffer(fStream);
}
fStream.Close();
Console.WriteLine(contents);
}
private static string ReadFromBuffer(FileStream fStream)
{
string output = String.Empty;
Decoder decoder8 = enc8.GetDecoder();
while (fStream.Position < fStream.Length) {
int nBytes = fStream.Read(bytes, 0, bytes.Length);
int nChars = decoder8.GetCharCount(bytes, 0, nBytes);
char[] chars = new char[nChars];
nChars = decoder8.GetChars(bytes, 0, nBytes, chars, 0);
output += new String(chars, 0, nChars);
}
return output;
}
}
// The example displays the following output:
// This is a UTF-8-encoded file that contains primarily Latin text, although it
// does list the first twelve letters of the Russian (Cyrillic) alphabet:
//
// А б в г д е ё ж з и й к
//
// The goal is to save this file, then open and decode it as a binary stream.
Imports System.IO
Imports System.Text
Module Example
Const MAX_BUFFER_SIZE As Integer = 2048
Dim enc8 As Encoding = Encoding.UTF8
Dim bytes(MAX_BUFFER_SIZE -1) As Byte
Public Sub Main()
Dim fStream As New FileStream(".\Utf8Example.txt", FileMode.Open)
Dim contents As String = Nothing
' If file size is small, read in a single operation.
If fStream.Length <= MAX_BUFFER_SIZE Then
Dim bytesRead As Integer = fStream.Read(bytes, 0, bytes.Length)
contents = enc8.GetString(bytes, 0, bytesRead)
' If file size exceeds buffer size, perform multiple reads.
Else
contents = ReadFromBuffer(fStream)
End If
fStream.Close()
Console.WriteLine(contents)
End Sub
Private Function ReadFromBuffer(fStream As FileStream) As String
Dim bytes(MAX_BUFFER_SIZE) As Byte
Dim output As String = String.Empty
Dim decoder8 As Decoder = enc8.GetDecoder()
Do While fStream.Position < fStream.Length
Dim nBytes As Integer = fStream.Read(bytes, 0, bytes.Length)
Dim nChars As Integer = decoder8.GetCharCount(bytes, 0, nBytes)
Dim chars(nChars - 1) As Char
nChars = decoder8.GetChars(bytes, 0, nBytes, chars, 0)
output += New String(chars, 0, nChars)
Loop
Return output
End Function
End Module
' The example displays the following output:
' This is a UTF-8-encoded file that contains primarily Latin text, although it
' does list the first twelve letters of the Russian (Cyrillic) alphabet:
'
' А б в г д е ё ж з и й к
'
' The goal is to save this file, then open and decode it as a binary stream.
L’exemple utilise le texte suivant, qui doit être enregistré dans un fichier encodé UTF-8 nommé Utf8Example.txt.
This is a UTF-8-encoded file that contains primarily Latin text, although it
does list the first twelve letters of the Russian (Cyrillic) alphabet:
А б в г д е ё ж з и й к
The goal is to save this file, then open and decode it as a binary stream.
Remarques
Si les données à convertir sont disponibles uniquement sous forme de blocs séquentiels (par exemple, les données lues à partir d'un flux) ou si la quantité de données est si importante qu'elle doit être divisée en blocs plus petits, vous devez utiliser la méthode Decoder ou la méthode Encoder fournie, respectivement, par la méthode GetDecoder ou la méthode GetEncoder d'une classe dérivée.
Consultez la section Remarques de la Encoding.GetChars rubrique de référence pour une discussion sur les techniques et considérations de décodage.
Voir aussi
S’applique à
GetString(Byte*, Int32)
Important
Cette API n’est pas conforme CLS.
En cas de substitution dans une classe dérivée, décode un nombre spécifié d’octets à partir d’une adresse spécifiée dans une chaîne.
public:
System::String ^ GetString(System::Byte* bytes, int byteCount);
[System.CLSCompliant(false)]
[System.Security.SecurityCritical]
public string GetString(byte* bytes, int byteCount);
[System.CLSCompliant(false)]
[System.Security.SecurityCritical]
[System.Runtime.InteropServices.ComVisible(false)]
public string GetString(byte* bytes, int byteCount);
[System.CLSCompliant(false)]
public string GetString(byte* bytes, int byteCount);
[<System.CLSCompliant(false)>]
[<System.Security.SecurityCritical>]
member this.GetString : nativeptr<byte> * int -> string
[<System.CLSCompliant(false)>]
[<System.Security.SecurityCritical>]
[<System.Runtime.InteropServices.ComVisible(false)>]
member this.GetString : nativeptr<byte> * int -> string
[<System.CLSCompliant(false)>]
member this.GetString : nativeptr<byte> * int -> string
Paramètres
- bytes
- Byte*
Pointeur vers un tableau d’octets.
- byteCount
- Int32
Nombre d’octets à décoder.
Retours
Chaîne qui contient les résultats du décodage de la séquence spécifiée d’octets.
- Attributs
Exceptions
bytes est un pointeur Null.
byteCount est inférieur à zéro.
Un secours s’est produit (voir Character Encoding in .NET pour obtenir une explication complète)
-et-
DecoderFallback a la valeur DecoderExceptionFallback.
Remarques
La GetString méthode est conçue pour optimiser les performances lorsque vous disposez d’un pointeur natif vers un tableau d’octets. Au lieu de créer un tableau d’octets managé, puis de le décoder, vous pouvez appeler cette méthode sans avoir à créer d’objets intermédiaires.
Si les données à convertir sont disponibles uniquement dans les blocs séquentiels (par exemple, les données lues à partir d’un flux) ou si la quantité de données est si importante qu’elle doit être divisée en blocs plus petits, vous devez utiliser l’objet Decoder retourné par la GetDecoder méthode d’une classe dérivée.
Consultez la section Remarques de la Encoding.GetChars rubrique de référence pour une discussion sur les techniques et considérations de décodage.
Notez que le comportement précis de la GetString méthode pour une implémentation particulière Encoding dépend de la stratégie de secours définie pour cet Encoding objet. Pour plus d’informations, consultez la section « Choix d’une stratégie de secours » de l’encodage Character dans .NET rubrique.
Voir aussi
S’applique à
GetString(Byte[])
En cas de substitution dans une classe dérivée, décode tous les octets du tableau d’octets spécifié dans une chaîne.
public:
virtual System::String ^ GetString(cli::array <System::Byte> ^ bytes);
public virtual string GetString(byte[] bytes);
abstract member GetString : byte[] -> string
override this.GetString : byte[] -> string
Public Overridable Function GetString (bytes As Byte()) As String
Paramètres
- bytes
- Byte[]
Tableau d’octets contenant la séquence d’octets à décoder.
Retours
Chaîne qui contient les résultats du décodage de la séquence spécifiée d’octets.
Exceptions
Le tableau d’octets contient des points de code Unicode non valides.
bytes a la valeur null.
Un secours s’est produit (pour plus d’informations, consultez Encodage de caractères dans .NET)
-et-
DecoderFallback a la valeur DecoderExceptionFallback.
Exemples
L’exemple suivant lit une chaîne encodée UTF-8 à partir d’un fichier binaire représenté par un FileStream objet. Pour les fichiers inférieurs à 2 048 octets, il lit le contenu du fichier entier dans un tableau d’octets et appelle la GetString(Byte[]) méthode pour effectuer le décodage. Pour les fichiers plus volumineux, il lit 2 048 octets à la fois dans un tableau d’octets, appelle la Decoder.GetCharCount(Byte[], Int32, Int32) méthode pour déterminer le nombre de caractères contenus dans le tableau, puis appelle la Decoder.GetChars(Byte[], Int32, Int32, Char[], Int32) méthode pour effectuer le décodage.
using System;
using System.IO;
using System.Text;
public class Example
{
const int MAX_BUFFER_SIZE = 2048;
static Encoding enc8 = Encoding.UTF8;
public static void Main()
{
FileStream fStream = new FileStream(@".\Utf8Example.txt", FileMode.Open);
string contents = null;
// If file size is small, read in a single operation.
if (fStream.Length <= MAX_BUFFER_SIZE) {
Byte[] bytes = new Byte[fStream.Length];
fStream.Read(bytes, 0, bytes.Length);
contents = enc8.GetString(bytes);
}
// If file size exceeds buffer size, perform multiple reads.
else {
contents = ReadFromBuffer(fStream);
}
fStream.Close();
Console.WriteLine(contents);
}
private static string ReadFromBuffer(FileStream fStream)
{
Byte[] bytes = new Byte[MAX_BUFFER_SIZE];
string output = String.Empty;
Decoder decoder8 = enc8.GetDecoder();
while (fStream.Position < fStream.Length) {
int nBytes = fStream.Read(bytes, 0, bytes.Length);
int nChars = decoder8.GetCharCount(bytes, 0, nBytes);
char[] chars = new char[nChars];
nChars = decoder8.GetChars(bytes, 0, nBytes, chars, 0);
output += new String(chars, 0, nChars);
}
return output;
}
}
// The example displays the following output:
// This is a UTF-8-encoded file that contains primarily Latin text, although it
// does list the first twelve letters of the Russian (Cyrillic) alphabet:
//
// А б в г д е ё ж з и й к
//
// The goal is to save this file, then open and decode it as a binary stream.
Imports System.IO
Imports System.Text
Module Example
Const MAX_BUFFER_SIZE As Integer = 2048
Dim enc8 As Encoding = Encoding.UTF8
Public Sub Main()
Dim fStream As New FileStream(".\Utf8Example.txt", FileMode.Open)
Dim contents As String = Nothing
' If file size is small, read in a single operation.
If fStream.Length <= MAX_BUFFER_SIZE Then
Dim bytes(CInt(fStream.Length) - 1) As Byte
fStream.Read(bytes, 0, bytes.Length)
contents = enc8.GetString(bytes)
' If file size exceeds buffer size, perform multiple reads.
Else
contents = ReadFromBuffer(fStream)
End If
fStream.Close()
Console.WriteLine(contents)
End Sub
Private Function ReadFromBuffer(fStream As FileStream) As String
Dim bytes(MAX_BUFFER_SIZE) As Byte
Dim output As String = String.Empty
Dim decoder8 As Decoder = enc8.GetDecoder()
Do While fStream.Position < fStream.Length
Dim nBytes As Integer = fStream.Read(bytes, 0, bytes.Length)
Dim nChars As Integer = decoder8.GetCharCount(bytes, 0, nBytes)
Dim chars(nChars - 1) As Char
nChars = decoder8.GetChars(bytes, 0, nBytes, chars, 0)
output += New String(chars, 0, nChars)
Loop
Return output
End Function
End Module
' The example displays the following output:
' This is a UTF-8-encoded file that contains primarily Latin text, although it
' does list the first twelve letters of the Russian (Cyrillic) alphabet:
'
' ? ? ? ? ? ? ? ? ? ? ? ?
'
' The goal is to save this file, then open and decode it as a binary stream.
L’exemple utilise le texte suivant, qui doit être enregistré dans un fichier encodé UTF-8 nommé Utf8Example.txt.
This is a UTF-8-encoded file that contains primarily Latin text, although it
does list the first twelve letters of the Russian (Cyrillic) alphabet:
А б в г д е ё ж з и й к
The goal is to save this file, then open and decode it as a binary stream.
Remarques
Si les données à convertir sont disponibles uniquement dans les blocs séquentiels (par exemple, les données lues à partir d’un flux) ou si la quantité de données est si importante qu’elle doit être divisée en blocs plus petits, vous devez utiliser l’objet Decoder retourné par la GetDecoder méthode d’une classe dérivée.
Consultez la section Remarques de la Encoding.GetChars rubrique de référence pour une discussion sur les techniques et considérations de décodage.
Notez que le comportement précis de la GetString méthode pour une implémentation particulière Encoding dépend de la stratégie de secours définie pour cet Encoding objet. Pour plus d’informations, consultez la section « Choix d’une stratégie de secours » de l’encodage Character dans .NET rubrique.
Voir aussi
S’applique à
GetString(ReadOnlySpan<Byte>)
En cas de substitution dans une classe dérivée, décode tous les octets de l’étendue d’octets spécifiée dans une chaîne.
public:
System::String ^ GetString(ReadOnlySpan<System::Byte> bytes);
public string GetString(ReadOnlySpan<byte> bytes);
member this.GetString : ReadOnlySpan<byte> -> string
Public Function GetString (bytes As ReadOnlySpan(Of Byte)) As String
Paramètres
- bytes
- ReadOnlySpan<Byte>
Étendue d’octet en lecture seule pour décoder en chaîne Unicode.
Retours
Chaîne qui contient les octets décodés de l’étendue en lecture seule fournie.
Remarques
La GetString méthode est conçue pour optimiser les performances. Au lieu de créer un tableau d’octets managé, puis de le décoder, vous pouvez appeler cette méthode sans avoir à créer d’objets intermédiaires.
Si les données à convertir sont disponibles uniquement dans les blocs séquentiels (par exemple, les données lues à partir d’un flux) ou si la quantité de données est si importante qu’elle doit être divisée en blocs plus petits, vous devez utiliser l’objet Decoder retourné par la GetDecoder méthode d’une classe dérivée.
Consultez la section Remarques de la Encoding.GetChars rubrique de référence pour une discussion sur les techniques et considérations de décodage.
Notez que le comportement précis de la GetString méthode pour une implémentation particulière Encoding dépend de la stratégie de secours définie pour cet Encoding objet. Pour plus d’informations, consultez la section « Choix d’une stratégie de secours » de l’encodage Character dans .NET rubrique.