Encoding.GetString Método
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Quando sobrescrito numa classe derivada, decodifica uma sequência de bytes numa cadeia.
Sobrecargas
| Name | Description |
|---|---|
| GetString(Byte[], Int32, Int32) |
Quando sobrescrito numa classe derivada, decodifica uma sequência de bytes do array de bytes especificado numa cadeia. |
| GetString(Byte*, Int32) |
Quando é sobreposto numa classe derivada, decodifica um número especificado de bytes começando num endereço especificado numa cadeia. |
| GetString(Byte[]) |
Quando sobrescrito numa classe derivada, decodifica todos os bytes do array de bytes especificado numa string. |
| GetString(ReadOnlySpan<Byte>) |
Quando sobrescrito numa classe derivada, decodifica todos os bytes do intervalo de bytes especificado numa string. |
GetString(Byte[], Int32, Int32)
Quando sobrescrito numa classe derivada, decodifica uma sequência de bytes do array de bytes especificado numa cadeia.
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[]
O array de bytes que contém a sequência de bytes a decodificar.
- index
- Int32
O índice do primeiro byte a descodificar.
- count
- Int32
O número de bytes a descodificar.
Devoluções
Uma cadeia que contém os resultados da decodificação da sequência especificada de bytes.
Exceções
O array de bytes contém pontos de código Unicode inválidos.
bytes é null.
index ou count é inferior a zero.
-ou-
index e count não denotam um intervalo válido em bytes.
Ocorreu um recurso de recurso (para mais informações, veja Codificação de Caracteres em .NET)
- e -
DecoderFallback está definido como DecoderExceptionFallback.
Exemplos
O exemplo seguinte lê uma cadeia codificada em UTF-8 a partir de um ficheiro binário representado por um FileStream objeto. Para ficheiros com menos de 2.048 bytes, lê o conteúdo de todo o ficheiro num array de bytes e chama o GetString(Byte[], Int32, Int32) método para realizar a descodificação. Para ficheiros maiores, lê 2.048 bytes de cada vez num array de bytes, chama o Decoder.GetCharCount(Byte[], Int32, Int32) método para determinar quantos caracteres estão contidos no array, e depois chama o Decoder.GetChars(Byte[], Int32, Int32, Char[], Int32) método para realizar a descodificaçã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 utiliza o texto seguinte, que deve ser guardado num ficheiro 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.
Observações
Se os dados a serem convertidos estiverem disponíveis apenas 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 fornecidos pelo método GetDecoder ou pelo método GetEncoder, respectivamente, de uma classe derivada.
Consulte a secção de Observações do Encoding.GetChars tópico de referência para uma discussão sobre técnicas e considerações de decodificação.
Ver também
Aplica-se a
GetString(Byte*, Int32)
Importante
Esta API não está em conformidade com CLS.
Quando é sobreposto numa classe derivada, decodifica um número especificado de bytes começando num endereço especificado numa cadeia.
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*
Um apontador para um array de bytes.
- byteCount
- Int32
O número de bytes a descodificar.
Devoluções
Uma cadeia que contém os resultados da decodificação da sequência especificada de bytes.
- Atributos
Exceções
bytes é um ponto nulo.
byteCount é inferior a zero.
Ocorreu um recurso de recurso (ver Codificação de Caracteres em .NET para uma explicação completa)
- e -
DecoderFallback está definido como DecoderExceptionFallback.
Observações
O GetString método foi concebido para otimizar o desempenho quando se tem um ponteiro nativo para um array de bytes. Em vez de criar um array de bytes geridos e depois descodificar, pode chamar este método sem ter de criar quaisquer objetos intermédios.
Se os dados a converter estiverem disponíveis apenas em blocos sequenciais (como dados lidos de um fluxo) ou se a quantidade de dados for tão grande que precisa de ser dividida em blocos mais pequenos, deve usar o Decoder objeto devolvido pelo GetDecoder método de uma classe derivada.
Consulte a secção de Observações do Encoding.GetChars tópico de referência para uma discussão sobre técnicas e considerações de decodificação.
Note-se que o comportamento preciso do GetString método para uma implementação particular Encoding depende da estratégia de recuo definida para esse Encoding objeto. Para mais informações, consulte a secção "Escolher uma Estratégia de Reserva" do tópico Codificação de Caracteres em .NET.
Ver também
Aplica-se a
GetString(Byte[])
Quando sobrescrito numa classe derivada, decodifica todos os bytes do array de bytes especificado numa string.
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[]
O array de bytes que contém a sequência de bytes a decodificar.
Devoluções
Uma cadeia que contém os resultados da decodificação da sequência especificada de bytes.
Exceções
O array de bytes contém pontos de código Unicode inválidos.
bytes é null.
Ocorreu um recurso de recurso (para mais informações, veja Codificação de Caracteres em .NET)
- e -
DecoderFallback está definido como DecoderExceptionFallback.
Exemplos
O exemplo seguinte lê uma cadeia codificada em UTF-8 a partir de um ficheiro binário representado por um FileStream objeto. Para ficheiros com menos de 2.048 bytes, lê o conteúdo de todo o ficheiro num array de bytes e chama o GetString(Byte[]) método para realizar a descodificação. Para ficheiros maiores, lê 2.048 bytes de cada vez num array de bytes, chama o Decoder.GetCharCount(Byte[], Int32, Int32) método para determinar quantos caracteres estão contidos no array, e depois chama o Decoder.GetChars(Byte[], Int32, Int32, Char[], Int32) método para realizar a descodificaçã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 utiliza o texto seguinte, que deve ser guardado num ficheiro 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.
Observações
Se os dados a converter estiverem disponíveis apenas em blocos sequenciais (como dados lidos de um fluxo) ou se a quantidade de dados for tão grande que precisa de ser dividida em blocos mais pequenos, deve usar o Decoder objeto devolvido pelo GetDecoder método de uma classe derivada.
Consulte a secção de Observações do Encoding.GetChars tópico de referência para uma discussão sobre técnicas e considerações de decodificação.
Note-se que o comportamento preciso do GetString método para uma implementação particular Encoding depende da estratégia de recuo definida para esse Encoding objeto. Para mais informações, consulte a secção "Escolher uma Estratégia de Reserva" do tópico Codificação de Caracteres em .NET.
Ver também
Aplica-se a
GetString(ReadOnlySpan<Byte>)
Quando sobrescrito numa classe derivada, decodifica todos os bytes do intervalo de bytes especificado numa string.
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 byte span de apenas leitura para decodificar para uma cadeia Unicode.
Devoluções
Uma cadeia que contém os bytes decodificados do intervalo de apenas leitura fornecido.
Observações
O GetString método foi concebido para otimizar o desempenho. Em vez de criar um array de bytes geridos e depois descodificar, pode chamar este método sem ter de criar quaisquer objetos intermédios.
Se os dados a converter estiverem disponíveis apenas em blocos sequenciais (como dados lidos de um fluxo) ou se a quantidade de dados for tão grande que precisa de ser dividida em blocos mais pequenos, deve usar o Decoder objeto devolvido pelo GetDecoder método de uma classe derivada.
Consulte a secção de Observações do Encoding.GetChars tópico de referência para uma discussão sobre técnicas e considerações de decodificação.
Note-se que o comportamento preciso do GetString método para uma implementação particular Encoding depende da estratégia de recuo definida para esse Encoding objeto. Para mais informações, consulte a secção "Escolher uma Estratégia de Reserva" do tópico Codificação de Caracteres em .NET.