Encoding.GetString Método

Definición

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

Sobrecargas

GetString(Byte[])

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

GetString(ReadOnlySpan<Byte>)

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

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.

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[])

Cuando se reemplaza 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

String

Cadena que contiene el resultado de la descodificación de la secuencia de bytes especificada.

Excepciones

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

bytes es null.

Se ha producido una reserva (para 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 con codificación UTF-8 de un archivo binario representado por un FileStream objeto. En el caso de los archivos de más de 2.048 bytes, lee el contenido de todo el archivo en una matriz de bytes y llama al GetString(Byte[]) método para realizar la descodificación. En el caso de los archivos de mayor tamaño, Lee 2.048 bytes a la vez en una matriz de bytes, llama al Decoder.GetCharCount(Byte[], Int32, Int32) método para determinar el número de caracteres que contiene 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 siguiente texto, que debe guardarse en un archivo con codificación 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 utilizar el Decoder objeto devuelto por el GetDecoder método de una clase derivada.

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

Tenga en cuenta que el comportamiento preciso del GetString método para una Encoding implementación concreta 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 codificación de caracteres en .net .

Consulte también

Se aplica a

GetString(ReadOnlySpan<Byte>)

Cuando se invalida 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>

Un intervalo de bytes de solo lectura que se va a descodificar en una cadena Unicode.

Devoluciones

String

Una 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 después descodificarla, puede llamar a este método sin tener que crear objetos intermedios.

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 GetDecoder método de una clase derivada.

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

Tenga en cuenta que el comportamiento preciso del GetString método para una Encoding implementación concreta 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 codificación de caracteres en .net .

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

Parámetros

bytes
Byte*

Puntero a una matriz de bytes.

byteCount
Int32

Número de bytes que se van a descodificar.

Devoluciones

String

Cadena que contiene el resultado de la descodificación de la secuencia de bytes especificada.

Atributos

Excepciones

bytes es un puntero nulo.

byteCount es menor que cero.

Se ha producido una acción de reserva (consulte Codificación de caracteres en .NET para obtener una explicación completa).

  • y -

El valor de DecoderFallback está establecido en DecoderExceptionFallback.

Comentarios

El GetString método está diseñado para optimizar el rendimiento cuando se tiene un puntero nativo a una matriz de bytes. 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.

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 GetDecoder método de una clase derivada.

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

Tenga en cuenta que el comportamiento preciso del GetString método para una Encoding implementación concreta 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 codificación de caracteres en .net .

Consulte también

Se aplica a

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

String

Cadena que contiene el resultado de la descodificación de 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 ha producido una reserva (para 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 con codificación UTF-8 de un archivo binario representado por un FileStream objeto. En el caso de los archivos de más de 2.048 bytes, lee el contenido de todo el archivo en una matriz de bytes y llama al GetString(Byte[], Int32, Int32) método para realizar la descodificación. En el caso de los archivos de mayor tamaño, Lee 2.048 bytes a la vez en una matriz de bytes, llama al Decoder.GetCharCount(Byte[], Int32, Int32) método para determinar el número de caracteres que contiene 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 siguiente texto, que debe guardarse en un archivo con codificación 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 utilizar Decoder o Encoder proporcionado por el GetDecoder método o el GetEncoder método, respectivamente, de una clase derivada.

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

Consulte también

Se aplica a