Encoding.GetString Método

Definición

Cuando se invalida en una clase derivada, descodifica una secuencia de bytes en una cadena.

Sobrecargas

Nombre Description
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.

GetString(Byte*, Int32)

Cuando se reemplaza en una clase derivada, descodifica un número especificado de bytes a partir de una dirección especificada en una cadena.

GetString(Byte[])

Cuando se invalida en una clase derivada, descodifica todos los bytes de la matriz de bytes especificada en una cadena.

GetString(ReadOnlySpan<Byte>)

Cuando se reemplaza en una clase derivada, descodifica todos los bytes del intervalo de bytes especificado en una cadena.

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.

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

Parámetros

bytes
Byte[]

Matriz de bytes que contiene la secuencia de bytes que se va a descodificar.

index
Int32

Índice del primer byte que se va a descodificar.

count
Int32

Número de bytes que se van a descodificar.

Devoluciones

Cadena que contiene los resultados de descodificar la secuencia de bytes especificada.

Excepciones

La matriz de bytes contiene puntos de código Unicode no válidos.

bytes es null.

index o count es menor que cero.

O bien

index y count no denotan un intervalo válido en bytes.

Se produjo una reserva (para obtener más información, vea Codificación de caracteres en .NET).

- y -

El valor de DecoderFallback está establecido en DecoderExceptionFallback.

Ejemplos

En el ejemplo siguiente se lee una cadena codificada UTF-8 de un archivo binario representado por un FileStream objeto . Para los archivos que son menores de 2048 bytes, lee el contenido del archivo completo en una matriz de bytes y llama al GetString(Byte[], Int32, Int32) método para realizar la descodificación. Para los archivos más grandes, lee 2048 bytes a la vez en una matriz de bytes, llama al Decoder.GetCharCount(Byte[], Int32, Int32) método para determinar cuántos caracteres se encuentran en la matriz y, a continuación, llama al Decoder.GetChars(Byte[], Int32, Int32, Char[], Int32) método para realizar la descodificación.

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 texto siguiente, que se debe guardar en un archivo codificado UTF-8 denominado 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.

Comentarios

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 usar el Decoder o el Encoder proporcionados por el método GetDecoder o el método GetEncoder, respectivamente, de una clase derivada.

Consulte la sección Comentarios del Encoding.GetChars tema de referencia para obtener una explicación de las técnicas y consideraciones de descodificación.

Consulte también

Se aplica a

GetString(Byte*, Int32)

Importante

Esta API no es conforme a CLS.

Cuando se reemplaza en una clase derivada, descodifica un número especificado de bytes a partir de una dirección especificada en una cadena.

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

Parámetros

bytes
Byte*

Puntero a una matriz de bytes.

byteCount
Int32

Número de bytes que se van a descodificar.

Devoluciones

Cadena que contiene los resultados de descodificar la secuencia de bytes especificada.

Atributos

Excepciones

bytes es un puntero nulo.

byteCount es menor que cero.

Se produjo una reserva (consulte Character Encoding en .NET para obtener una explicación completa).

- y -

El valor de DecoderFallback está establecido en DecoderExceptionFallback.

Comentarios

El método está diseñado para optimizar el GetString rendimiento cuando tiene un puntero nativo a una matriz de bytes. En lugar de crear una matriz de bytes administrada y, a continuación, descodificarla, puede llamar a este método sin tener que crear ningún objeto intermedio.

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 usar el Decoder objeto devuelto por el GetDecoder método de una clase derivada.

Consulte la sección Comentarios del Encoding.GetChars tema de referencia para obtener una explicación de las técnicas y consideraciones de descodificación.

Tenga en cuenta que el comportamiento preciso del GetString método para una implementación determinada Encoding depende de la estrategia de reserva definida para ese Encoding objeto. Para obtener más información, vea la sección "Elegir una estrategia de reserva" del tema Character Encoding en .NET.

Consulte también

Se aplica a

GetString(Byte[])

Cuando se invalida en una clase derivada, descodifica todos los bytes de la matriz de bytes especificada en una cadena.

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

Parámetros

bytes
Byte[]

Matriz de bytes que contiene la secuencia de bytes que se va a descodificar.

Devoluciones

Cadena que contiene los resultados de descodificar la secuencia de bytes especificada.

Excepciones

La matriz de bytes contiene puntos de código Unicode no válidos.

bytes es null.

Se produjo una reserva (para obtener más información, vea Codificación de caracteres en .NET).

- y -

El valor de DecoderFallback está establecido en DecoderExceptionFallback.

Ejemplos

En el ejemplo siguiente se lee una cadena codificada UTF-8 de un archivo binario representado por un FileStream objeto . Para los archivos que son menores de 2048 bytes, lee el contenido del archivo completo en una matriz de bytes y llama al GetString(Byte[]) método para realizar la descodificación. Para los archivos más grandes, lee 2048 bytes a la vez en una matriz de bytes, llama al Decoder.GetCharCount(Byte[], Int32, Int32) método para determinar cuántos caracteres se encuentran en la matriz y, a continuación, llama al Decoder.GetChars(Byte[], Int32, Int32, Char[], Int32) método para realizar la descodificación.

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 texto siguiente, que se debe guardar en un archivo codificado UTF-8 denominado 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.

Comentarios

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 usar el Decoder objeto devuelto por el GetDecoder método de una clase derivada.

Consulte la sección Comentarios del Encoding.GetChars tema de referencia para obtener una explicación de las técnicas y consideraciones de descodificación.

Tenga en cuenta que el comportamiento preciso del GetString método para una implementación determinada Encoding depende de la estrategia de reserva definida para ese Encoding objeto. Para obtener más información, vea la sección "Elegir una estrategia de reserva" del tema Character Encoding en .NET.

Consulte también

Se aplica a

GetString(ReadOnlySpan<Byte>)

Cuando se reemplaza en una clase derivada, descodifica todos los bytes del intervalo de bytes especificado en una cadena.

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

Parámetros

bytes
ReadOnlySpan<Byte>

Intervalo de bytes de solo lectura para descodificar en una cadena Unicode.

Devoluciones

Cadena que contiene los bytes descodificados del intervalo de solo lectura proporcionado.

Comentarios

El GetString método está diseñado para optimizar el rendimiento. En lugar de crear una matriz de bytes administrada y, a continuación, descodificarla, puede llamar a este método sin tener que crear ningún objeto intermedio.

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 usar el Decoder objeto devuelto por el GetDecoder método de una clase derivada.

Consulte la sección Comentarios del Encoding.GetChars tema de referencia para obtener una explicación de las técnicas y consideraciones de descodificación.

Tenga en cuenta que el comportamiento preciso del GetString método para una implementación determinada Encoding depende de la estrategia de reserva definida para ese Encoding objeto. Para obtener más información, vea la sección "Elegir una estrategia de reserva" del tema Character Encoding en .NET.

Se aplica a