Encoding.GetString Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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.
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 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>)
- 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.
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
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)
- 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.
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.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
[<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
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)
- 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.
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 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.