Ler en inglés

Compartir por


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

Source:
Encoding.cs
Source:
Encoding.cs
Source:
Encoding.cs

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

C#
public virtual string GetString (byte[] bytes);

Parámetros

bytes
Byte[]

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

Devoluciones

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.

C#
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.

En el ejemplo se usa el siguiente texto, que debe guardarse en un archivo con codificación UTF-8 denominado Utf8Example.txt.

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

.NET 9 e outras versións
Produto Versións
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

GetString(ReadOnlySpan<Byte>)

Source:
Encoding.cs
Source:
Encoding.cs
Source:
Encoding.cs

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

C#
public string GetString (ReadOnlySpan<byte> bytes);

Parámetros

bytes
ReadOnlySpan<Byte>

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

Devoluciones

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

.NET 9 e outras versións
Produto Versións
.NET Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Standard 2.1

GetString(Byte*, Int32)

Source:
Encoding.cs
Source:
Encoding.cs
Source:
Encoding.cs

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.

C#
[System.CLSCompliant(false)]
[System.Security.SecurityCritical]
public string GetString (byte* bytes, int byteCount);
C#
[System.CLSCompliant(false)]
public string GetString (byte* bytes, int byteCount);
C#
[System.CLSCompliant(false)]
[System.Security.SecurityCritical]
[System.Runtime.InteropServices.ComVisible(false)]
public string GetString (byte* bytes, int byteCount);

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 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

.NET 9 e outras versións
Produto Versións
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

GetString(Byte[], Int32, Int32)

Source:
Encoding.cs
Source:
Encoding.cs
Source:
Encoding.cs

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

C#
public virtual string GetString (byte[] bytes, int index, int count);

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

C#
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.

En el ejemplo se usa el siguiente texto, que debe guardarse en un archivo con codificación UTF-8 denominado Utf8Example.txt.

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

.NET 9 e outras versións
Produto Versións
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0