Encoding.GetString Method

Definition

Cuando se reemplaza en una clase derivada, descodifica una secuencia de bytes en una cadena.When overridden in a derived class, decodes a sequence of bytes into a string.

Overloads

GetString(Byte[], Int32, Int32)

Cuando se reemplaza en una clase derivada, descodifica una secuencia de bytes de la matriz de bytes especificada en una cadena.When overridden in a derived class, decodes a sequence of bytes from the specified byte array into a string.

GetString(Byte*, Int32)

Cuando se reemplaza en una clase derivada, descodifica un número determinado de bytes a partir de una dirección especificada en una cadena.When overridden in a derived class, decodes a specified number of bytes starting at a specified address into a string.

GetString(Byte[])

Cuando se reemplaza en una clase derivada, descodifica todos los bytes de la matriz de bytes especificada en una cadena.When overridden in a derived class, decodes all the bytes in the specified byte array into a string.

GetString(ReadOnlySpan<Byte>)

Cuando se invalida en una clase derivada, descodifica todos los bytes del intervalo de bytes especificado en una cadena.When overridden in a derived class, decodes all the bytes in the specified byte span into a string.

GetString(Byte[], Int32, Int32)

Cuando se reemplaza en una clase derivada, descodifica una secuencia de bytes de la matriz de bytes especificada en una cadena.When overridden in a derived class, decodes a sequence of bytes from the specified byte array into a string.

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

Parameters

bytes
Byte[]

Matriz de bytes que contiene la secuencia de bytes que se va a descodificar.The byte array containing the sequence of bytes to decode.

index
Int32

Índice del primer byte que se va a descodificar.The index of the first byte to decode.

count
Int32

Número de bytes que se van a descodificar.The number of bytes to decode.

Returns

String

Cadena que contiene el resultado de la descodificación de la secuencia de bytes especificada.A string that contains the results of decoding the specified sequence of bytes.

Exceptions

La matriz de bytes contiene puntos de código Unicode no válidos.The byte array contains invalid Unicode code points.

bytes es null.bytes is null.

index o count es menor que cero.index or count is less than zero.

O bien-or-

index y count no denotan un intervalo válido en bytes.index and count do not denote a valid range in bytes.

Se ha producido una reserva (para más información, vea Codificación de caracteres en .NET)A fallback occurred (for more information, see Character Encoding in .NET)

y-and-

DecoderFallback se establece en DecoderExceptionFallback.DecoderFallback is set to DecoderExceptionFallback.

Examples

En el ejemplo siguiente se lee una cadena con codificación UTF-8 de un archivo binario representado por un objeto FileStream.The following example reads a UTF-8 encoded string from a binary file that is represented by a FileStream object. En el caso de los archivos de más de 2.048 bytes, lee el contenido del archivo completo en una matriz de bytes y llama al método GetString(Byte[], Int32, Int32) para realizar la descodificación.For files that are smaller than 2,048 bytes, it reads the contents of the entire file into a byte array and calls the GetString(Byte[], Int32, Int32) method to perform the decoding. En el caso de los archivos de mayor tamaño, Lee 2.048 bytes a la vez en una matriz de bytes, llama al método Decoder.GetCharCount(Byte[], Int32, Int32) para determinar el número de caracteres que contiene la matriz y, a continuación, llama al método Decoder.GetChars(Byte[], Int32, Int32, Char[], Int32) para realizar la descodificación.For larger files, it reads 2,048 bytes at a time into a byte array, calls the Decoder.GetCharCount(Byte[], Int32, Int32) method to determine how many characters are contained in the array, and then calls the Decoder.GetChars(Byte[], Int32, Int32, Char[], Int32) method to perform the decoding.

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.

En el ejemplo se usa el siguiente texto, que debe guardarse en un archivo con codificación UTF-8 denominado Utf8Example. txt.The example uses the following text, which should be saved to a UTF-8 encoded file named 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.

Remarks

Si los datos que se van a convertir solo están disponibles en bloques secuenciales (como los datos leídos de una secuencia) o si la cantidad de datos es tan grande que debe dividirse en bloques más pequeños, debe utilizar el Decoder o el Encoder proporcionado por el método GetDecoder o el método GetEncoder, respectivamente, de una clase derivada.If the data to be converted is available only in sequential blocks (such as data read from a stream) or if the amount of data is so large that it needs to be divided into smaller blocks, you should use the Decoder or the Encoder provided by the GetDecoder method or the GetEncoder method, respectively, of a derived class.

Vea la sección Comentarios del tema de referencia de Encoding.GetChars para obtener una explicación de las técnicas y las consideraciones de descodificación.See the Remarks section of the Encoding.GetChars reference topic for a discussion of decoding techniques and considerations.

See also

GetString(Byte*, Int32)

Important

This API is not CLS-compliant.

Cuando se reemplaza en una clase derivada, descodifica un número determinado de bytes a partir de una dirección especificada en una cadena.When overridden in a derived class, decodes a specified number of bytes starting at a specified address into a string.

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)]
public string GetString (byte* bytes, int byteCount);
[System.CLSCompliant(false)]
[System.Runtime.InteropServices.ComVisible(false)]
[System.Security.SecurityCritical]
public string GetString (byte* bytes, int byteCount);
member this.GetString : nativeptr<byte> * int -> string

Parameters

bytes
Byte*

Puntero a una matriz de bytes.A pointer to a byte array.

byteCount
Int32

Número de bytes que se van a descodificar.The number of bytes to decode.

Returns

String

Cadena que contiene el resultado de la descodificación de la secuencia de bytes especificada.A string that contains the results of decoding the specified sequence of bytes.

Attributes

Exceptions

bytes es un puntero nulo.bytes is a null pointer.

byteCount es menor que cero.byteCount is less than zero.

Se ha producido una acción de reserva (consulte Codificación de caracteres en .NET para obtener una explicación completa).A fallback occurred (see Character Encoding in .NET) for a complete explanation)

y-and-

DecoderFallback se establece en DecoderExceptionFallback.DecoderFallback is set to DecoderExceptionFallback.

Remarks

El método GetString está diseñado para optimizar el rendimiento cuando se tiene un puntero nativo a una matriz de bytes.The GetString method is designed to optimize performance when you have a native pointer to a byte array. En lugar de crear una matriz de bytes administrada y después descodificarla, puede llamar a este método sin tener que crear objetos intermedios.Instead of creating a managed byte array and then decoding it, you can instead call this method without having to create any intermediate objects.

Si los datos que se van a convertir solo están disponibles en bloques secuenciales (como los datos leídos de una secuencia) o si la cantidad de datos es tan grande que debe dividirse en bloques más pequeños, debe utilizar el Decoder objeto devuelto por el método GetDecoder de una clase derivada.If the data to be converted is available only in sequential blocks (such as data read from a stream) or if the amount of data is so large that it needs to be divided into smaller blocks, you should use the Decoder object returned by the GetDecoder method of a derived class.

Vea la sección Comentarios del tema de referencia de Encoding.GetChars para obtener una explicación de las técnicas y las consideraciones de descodificación.See the Remarks section of the Encoding.GetChars reference topic for a discussion of decoding techniques and considerations.

Tenga en cuenta que el comportamiento preciso del método GetString para una implementación de Encoding determinada depende de la estrategia de reserva definida para ese objeto Encoding.Note that the precise behavior of the GetString method for a particular Encoding implementation depends on the fallback strategy defined for that Encoding object. Para obtener más información, vea la sección "elegir una estrategia de reserva" del tema codificación de caracteres en .net .For more information, see the "Choosing a Fallback Strategy" section of the Character Encoding in .NET topic.

See also

GetString(Byte[])

Cuando se reemplaza en una clase derivada, descodifica todos los bytes de la matriz de bytes especificada en una cadena.When overridden in a derived class, decodes all the bytes in the specified byte array into a string.

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

Parameters

bytes
Byte[]

Matriz de bytes que contiene la secuencia de bytes que se va a descodificar.The byte array containing the sequence of bytes to decode.

Returns

String

Cadena que contiene el resultado de la descodificación de la secuencia de bytes especificada.A string that contains the results of decoding the specified sequence of bytes.

Exceptions

La matriz de bytes contiene puntos de código Unicode no válidos.The byte array contains invalid Unicode code points.

bytes es null.bytes is null.

Se ha producido una reserva (para más información, vea Codificación de caracteres en .NET)A fallback occurred (for more information, see Character Encoding in .NET)

y-and-

DecoderFallback se establece en DecoderExceptionFallback.DecoderFallback is set to DecoderExceptionFallback.

Examples

En el ejemplo siguiente se lee una cadena con codificación UTF-8 de un archivo binario representado por un objeto FileStream.The following example reads a UTF-8 encoded string from a binary file represented by a FileStream object. En el caso de los archivos de más de 2.048 bytes, lee el contenido del archivo completo en una matriz de bytes y llama al método GetString(Byte[]) para realizar la descodificación.For files that are smaller than 2,048 bytes, it reads the contents of the entire file into a byte array and calls the GetString(Byte[]) method to perform the decoding. En el caso de los archivos de mayor tamaño, Lee 2.048 bytes a la vez en una matriz de bytes, llama al método Decoder.GetCharCount(Byte[], Int32, Int32) para determinar el número de caracteres que contiene la matriz y, a continuación, llama al método Decoder.GetChars(Byte[], Int32, Int32, Char[], Int32) para realizar la descodificación.For larger files, it reads 2,048 bytes at a time into a byte array, calls the Decoder.GetCharCount(Byte[], Int32, Int32) method to determine how many characters are contained in the array, and then calls the Decoder.GetChars(Byte[], Int32, Int32, Char[], Int32) method to perform the decoding.

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.

En el ejemplo se usa el siguiente texto, que debe guardarse en un archivo con codificación UTF-8 denominado Utf8Example. txt.The example uses the following text, which should be saved to a UTF-8 encoded file named 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.

Remarks

Si los datos que se van a convertir solo están disponibles en bloques secuenciales (como los datos leídos de una secuencia) o si la cantidad de datos es tan grande que debe dividirse en bloques más pequeños, debe utilizar el Decoder objeto devuelto por el método GetDecoder de una clase derivada.If the data to be converted is available only in sequential blocks (such as data read from a stream) or if the amount of data is so large that it needs to be divided into smaller blocks, you should use the Decoder object returned by the GetDecoder method of a derived class.

Vea la sección Comentarios del tema de referencia de Encoding.GetChars para obtener una explicación de las técnicas y las consideraciones de descodificación.See the Remarks section of the Encoding.GetChars reference topic for a discussion of decoding techniques and considerations.

Tenga en cuenta que el comportamiento preciso del método GetString para una implementación de Encoding determinada depende de la estrategia de reserva definida para ese objeto Encoding.Note that the precise behavior of the GetString method for a particular Encoding implementation depends on the fallback strategy defined for that Encoding object. Para obtener más información, vea la sección "elegir una estrategia de reserva" del tema codificación de caracteres en .net .For more information, see the "Choosing a Fallback Strategy" section of the Character Encoding in .NET topic.

See also

GetString(ReadOnlySpan<Byte>)

Cuando se invalida en una clase derivada, descodifica todos los bytes del intervalo de bytes especificado en una cadena.When overridden in a derived class, decodes all the bytes in the specified byte span into a string.

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

Parameters

bytes
ReadOnlySpan<Byte>

Un intervalo de bytes de solo lectura que se va a descodificar en una cadena Unicode.A read-only byte span to decode to a Unicode string.

Returns

String

Una cadena que contiene los bytes descodificados del intervalo de solo lectura proporcionado.A string that contains the decoded bytes from the provided read-only span.

Remarks

El método GetString está diseñado para optimizar el rendimiento.The GetString method is designed to optimize performance. En lugar de crear una matriz de bytes administrada y después descodificarla, puede llamar a este método sin tener que crear objetos intermedios.Instead of creating a managed byte array and then decoding it, you can instead call this method without having to create any intermediate objects.

Si los datos que se van a convertir solo están disponibles en bloques secuenciales (como los datos leídos de una secuencia) o si la cantidad de datos es tan grande que debe dividirse en bloques más pequeños, debe utilizar el Decoder objeto devuelto por el método GetDecoder de una clase derivada.If the data to be converted is available only in sequential blocks (such as data read from a stream) or if the amount of data is so large that it needs to be divided into smaller blocks, you should use the Decoder object returned by the GetDecoder method of a derived class.

Vea la sección Comentarios del tema de referencia de Encoding.GetChars para obtener una explicación de las técnicas y las consideraciones de descodificación.See the Remarks section of the Encoding.GetChars reference topic for a discussion of decoding techniques and considerations.

Tenga en cuenta que el comportamiento preciso del método GetString para una implementación de Encoding determinada depende de la estrategia de reserva definida para ese objeto Encoding.Note that the precise behavior of the GetString method for a particular Encoding implementation depends on the fallback strategy defined for that Encoding object. Para obtener más información, vea la sección "elegir una estrategia de reserva" del tema codificación de caracteres en .net .For more information, see the "Choosing a Fallback Strategy" section of the Character Encoding in .NET topic.

Applies to