Encoding.GetString Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Quando substituído em uma classe derivada, decodifica uma sequência de bytes em uma cadeia de caracteres.
Sobrecargas
GetString(Byte[]) |
Quando substituído em uma classe derivada, decodifica todos os bytes na matriz de bytes especificada em uma cadeia de caracteres. |
GetString(ReadOnlySpan<Byte>) |
Quando substituído em uma classe derivada, decodifica todos os bytes no intervalo de bytes especificado em uma cadeia de caracteres. |
GetString(Byte*, Int32) |
Quando substituído em uma classe derivada, decodifica um número especificado de bytes, começando em um endereço especificado em uma cadeia de caracteres. |
GetString(Byte[], Int32, Int32) |
Quando substituído em uma classe derivada, decodifica uma sequência de bytes da matriz de bytes especificada em uma cadeia de caracteres. |
GetString(Byte[])
- Origem:
- Encoding.cs
- Origem:
- Encoding.cs
- Origem:
- Encoding.cs
Quando substituído em uma classe derivada, decodifica todos os bytes na matriz de bytes especificada em uma cadeia de caracteres.
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[]
A matriz de bytes que contém a sequência de bytes a ser decodificada.
Retornos
Uma cadeia de caracteres que contém os resultados da decodificação da sequência de bytes especificada.
Exceções
A matriz de bytes contém pontos de código Unicode inválidos.
bytes
é null
.
Ocorreu um fallback (saiba mais em Codificação de caracteres no .NET)
-e-
DecoderFallback é definido como DecoderExceptionFallback.
Exemplos
O exemplo a seguir lê uma cadeia de caracteres codificada em UTF-8 de um arquivo binário representado por um FileStream objeto. Para arquivos menores que 2.048 bytes, ele lê o conteúdo de todo o arquivo em uma matriz de bytes e chama o GetString(Byte[]) método para executar a decodificação. Para arquivos maiores, ele lê 2.048 bytes por vez em uma matriz de bytes, chama o Decoder.GetCharCount(Byte[], Int32, Int32) método para determinar quantos caracteres estão contidos na matriz e, em seguida, chama o Decoder.GetChars(Byte[], Int32, Int32, Char[], Int32) método para executar a decodificação.
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.
O exemplo usa o texto a seguir, que deve ser salvo em um arquivo codificado em UTF-8 chamado 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.
Comentários
Se os dados a serem convertidos estiverem disponíveis somente em blocos sequenciais (como dados lidos de um fluxo) ou se a quantidade de dados for tão grande que precise ser dividida em blocos menores, você deverá usar o Decoder objeto retornado pelo GetDecoder método de uma classe derivada.
Consulte a seção comentários do Encoding.GetChars tópico de referência para obter uma discussão de como decodificar técnicas e considerações.
Observe que o comportamento preciso do GetString método para uma implementação específica Encoding depende da estratégia de fallback definida para esse Encoding objeto. Para obter mais informações, consulte a seção "escolhendo uma estratégia de fallback" do tópico codificação de caracteres no .net .
Confira também
Aplica-se a
GetString(ReadOnlySpan<Byte>)
- Origem:
- Encoding.cs
- Origem:
- Encoding.cs
- Origem:
- Encoding.cs
Quando substituído em uma classe derivada, decodifica todos os bytes no intervalo de bytes especificado em uma cadeia de caracteres.
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>
Um intervalo de bytes somente leitura a ser decodificado para uma cadeia de caracteres Unicode.
Retornos
Uma cadeia de caracteres que contém os bytes decodificados do intervalo de somente leitura fornecido.
Comentários
O GetString método foi projetado para otimizar o desempenho. Em vez de criar uma matriz de bytes gerenciado e, em seguida, decodificá-la, você pode chamar esse método sem precisar criar objetos intermediários.
Se os dados a serem convertidos estiverem disponíveis somente em blocos sequenciais (como dados lidos de um fluxo) ou se a quantidade de dados for tão grande que precise ser dividida em blocos menores, você deverá usar o Decoder objeto retornado pelo GetDecoder método de uma classe derivada.
Consulte a seção comentários do Encoding.GetChars tópico de referência para obter uma discussão de como decodificar técnicas e considerações.
Observe que o comportamento preciso do GetString método para uma implementação específica Encoding depende da estratégia de fallback definida para esse Encoding objeto. Para obter mais informações, consulte a seção "escolhendo uma estratégia de fallback" do tópico codificação de caracteres no .net .
Aplica-se a
GetString(Byte*, Int32)
- Origem:
- Encoding.cs
- Origem:
- Encoding.cs
- Origem:
- Encoding.cs
Importante
Esta API não está em conformidade com CLS.
Quando substituído em uma classe derivada, decodifica um número especificado de bytes, começando em um endereço especificado em uma cadeia de caracteres.
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*
Um ponteiro para uma matriz de bytes.
- byteCount
- Int32
O número de bytes a serem decodificados.
Retornos
Uma cadeia de caracteres que contém os resultados da decodificação da sequência de bytes especificada.
- Atributos
Exceções
O bytes
é um ponteiro nulo.
byteCount
é menor que zero.
Ocorreu um fallback (confira Codificação de caracteres no .NET para obter uma explicação completa)
-e-
DecoderFallback é definido como DecoderExceptionFallback.
Comentários
O GetString método foi projetado para otimizar o desempenho quando você tem um ponteiro nativo para uma matriz de bytes. Em vez de criar uma matriz de bytes gerenciado e, em seguida, decodificá-la, você pode chamar esse método sem precisar criar objetos intermediários.
Se os dados a serem convertidos estiverem disponíveis somente em blocos sequenciais (como dados lidos de um fluxo) ou se a quantidade de dados for tão grande que precise ser dividida em blocos menores, você deverá usar o Decoder objeto retornado pelo GetDecoder método de uma classe derivada.
Consulte a seção comentários do Encoding.GetChars tópico de referência para obter uma discussão de como decodificar técnicas e considerações.
Observe que o comportamento preciso do GetString método para uma implementação específica Encoding depende da estratégia de fallback definida para esse Encoding objeto. Para obter mais informações, consulte a seção "escolhendo uma estratégia de fallback" do tópico codificação de caracteres no .net .
Confira também
Aplica-se a
GetString(Byte[], Int32, Int32)
- Origem:
- Encoding.cs
- Origem:
- Encoding.cs
- Origem:
- Encoding.cs
Quando substituído em uma classe derivada, decodifica uma sequência de bytes da matriz de bytes especificada em uma cadeia de caracteres.
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[]
A matriz de bytes que contém a sequência de bytes a ser decodificada.
- index
- Int32
O índice do primeiro byte a ser decodificado.
- count
- Int32
O número de bytes a serem decodificados.
Retornos
Uma cadeia de caracteres que contém os resultados da decodificação da sequência de bytes especificada.
Exceções
A matriz de bytes contém pontos de código Unicode inválidos.
bytes
é null
.
index
ou count
é menor que zero.
- ou -
index
e count
não denotam um intervalo válido em bytes
.
Ocorreu um fallback (saiba mais em Codificação de caracteres no .NET)
-e-
DecoderFallback é definido como DecoderExceptionFallback.
Exemplos
O exemplo a seguir lê uma cadeia de caracteres codificada em UTF-8 de um arquivo binário representado por um FileStream objeto. Para arquivos menores que 2.048 bytes, ele lê o conteúdo de todo o arquivo em uma matriz de bytes e chama o GetString(Byte[], Int32, Int32) método para executar a decodificação. Para arquivos maiores, ele lê 2.048 bytes por vez em uma matriz de bytes, chama o Decoder.GetCharCount(Byte[], Int32, Int32) método para determinar quantos caracteres estão contidos na matriz e, em seguida, chama o Decoder.GetChars(Byte[], Int32, Int32, Char[], Int32) método para executar a decodificação.
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.
O exemplo usa o texto a seguir, que deve ser salvo em um arquivo codificado em UTF-8 chamado 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.
Comentários
Se os dados a serem convertidos estiverem disponíveis somente em blocos sequenciais (como dados lidos de um fluxo) ou se a quantidade de dados for tão grande que precise ser dividida em blocos menores, você deverá usar o Decoder ou o Encoder fornecido pelo GetDecoder método ou pelo GetEncoder método, respectivamente, de uma classe derivada.
Consulte a seção comentários do Encoding.GetChars tópico de referência para obter uma discussão de como decodificar técnicas e considerações.