Condividi tramite


Encoding.GetString Metodo

Definizione

Quando ne viene eseguito l'override in una classe derivata, decodifica una sequenza di byte in una stringa.

Overload

GetString(Byte[])

Quando ne viene eseguito l'override in una classe derivata, decodifica tutti i byte nella matrice di byte specificata in una stringa.

GetString(ReadOnlySpan<Byte>)

Quando ne viene eseguito l'override in una classe derivata, decodifica tutti i byte nell'intervallo di byte specificato in una stringa.

GetString(Byte*, Int32)

Quando ne viene eseguito l'override in una classe derivata, decodifica un numero di byte specificato partendo da un indirizzo specificato in una stringa.

GetString(Byte[], Int32, Int32)

Quando ne viene eseguito l'override in una classe derivata, decodifica una sequenza di byte dalla matrice di byte specificata in una stringa.

GetString(Byte[])

Origine:
Encoding.cs
Origine:
Encoding.cs
Origine:
Encoding.cs

Quando ne viene eseguito l'override in una classe derivata, decodifica tutti i byte nella matrice di byte specificata in una stringa.

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

Parametri

bytes
Byte[]

Matrice di byte contenente la sequenza di byte da decodificare.

Restituisce

Stringa contenente i risultati di decodifica della sequenza di byte specificata.

Eccezioni

La matrice di byte contiene punti di codice Unicode non validi.

bytes è null.

Si è verificato un fallback (per altre informazioni, vedere Codifica dei caratteri in .NET)

-e-

DecoderFallback è impostato su DecoderExceptionFallback.

Esempio

Nell'esempio seguente viene letta una stringa con codifica UTF-8 da un file binario rappresentato da un FileStream oggetto. Per i file di dimensioni inferiori a 2.048 byte, il contenuto dell'intero file viene letto in una matrice di byte e viene chiamato il GetString(Byte[]) metodo per eseguire la decodifica. Per i file di dimensioni maggiori, legge 2.048 byte alla volta in una matrice di byte, chiama il Decoder.GetCharCount(Byte[], Int32, Int32) metodo per determinare il numero di caratteri contenuti nella matrice e quindi chiama il Decoder.GetChars(Byte[], Int32, Int32, Char[], Int32) metodo per eseguire la decodifica.

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.

Nell'esempio viene utilizzato il testo seguente, che deve essere salvato in un file con codifica UTF-8 denominato 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.

Commenti

Se i dati da convertire sono disponibili solo in blocchi sequenziali, ad esempio i dati letti da un flusso, o se la quantità di dati è talmente grande da essere divisa in blocchi più piccoli, è necessario utilizzare l' Decoder oggetto restituito dal GetDecoder metodo di una classe derivata.

Vedere la sezione Osservazioni dell' Encoding.GetChars argomento di riferimento per una discussione sulla decodifica di tecniche e considerazioni.

Si noti che il comportamento preciso del GetString metodo per una particolare Encoding implementazione dipende dalla strategia di fallback definita per tale Encoding oggetto. Per ulteriori informazioni, vedere la sezione "scelta di una strategia di fallback" nell'argomento codifica dei caratteri in .NET .

Vedi anche

Si applica a

GetString(ReadOnlySpan<Byte>)

Origine:
Encoding.cs
Origine:
Encoding.cs
Origine:
Encoding.cs

Quando ne viene eseguito l'override in una classe derivata, decodifica tutti i byte nell'intervallo di byte specificato in una stringa.

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

Parametri

bytes
ReadOnlySpan<Byte>

Intervallo di byte di sola lettura da decodificare in una stringa Unicode.

Restituisce

Stringa che contiene i byte decodificati dall'intervallo di sola lettura specificato.

Commenti

Il GetString metodo è progettato per ottimizzare le prestazioni. Invece di creare una matrice di byte gestita e di decodificarla, è invece possibile chiamare questo metodo senza dover creare oggetti intermedi.

Se i dati da convertire sono disponibili solo in blocchi sequenziali, ad esempio i dati letti da un flusso, o se la quantità di dati è talmente grande da essere divisa in blocchi più piccoli, è necessario utilizzare l' Decoder oggetto restituito dal GetDecoder metodo di una classe derivata.

Vedere la sezione Osservazioni dell' Encoding.GetChars argomento di riferimento per una discussione sulla decodifica di tecniche e considerazioni.

Si noti che il comportamento preciso del GetString metodo per una particolare Encoding implementazione dipende dalla strategia di fallback definita per tale Encoding oggetto. Per ulteriori informazioni, vedere la sezione "scelta di una strategia di fallback" nell'argomento codifica dei caratteri in .NET .

Si applica a

GetString(Byte*, Int32)

Origine:
Encoding.cs
Origine:
Encoding.cs
Origine:
Encoding.cs

Importante

Questa API non è conforme a CLS.

Quando ne viene eseguito l'override in una classe derivata, decodifica un numero di byte specificato partendo da un indirizzo specificato in una stringa.

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

Parametri

bytes
Byte*

Puntatore a una matrice di byte.

byteCount
Int32

Numero di byte da decodificare.

Restituisce

Stringa contenente i risultati di decodifica della sequenza di byte specificata.

Attributi

Eccezioni

bytes è un puntatore Null.

byteCount è minore di zero.

Si è verificato un fallback. Per una spiegazione completa, vedere Codifica dei caratteri in .NET

-e-

DecoderFallback è impostato su DecoderExceptionFallback.

Commenti

Il GetString metodo è progettato per ottimizzare le prestazioni quando si dispone di un puntatore nativo a una matrice di byte. Invece di creare una matrice di byte gestita e di decodificarla, è invece possibile chiamare questo metodo senza dover creare oggetti intermedi.

Se i dati da convertire sono disponibili solo in blocchi sequenziali, ad esempio i dati letti da un flusso, o se la quantità di dati è talmente grande da essere divisa in blocchi più piccoli, è necessario utilizzare l' Decoder oggetto restituito dal GetDecoder metodo di una classe derivata.

Vedere la sezione Osservazioni dell' Encoding.GetChars argomento di riferimento per una discussione sulla decodifica di tecniche e considerazioni.

Si noti che il comportamento preciso del GetString metodo per una particolare Encoding implementazione dipende dalla strategia di fallback definita per tale Encoding oggetto. Per ulteriori informazioni, vedere la sezione "scelta di una strategia di fallback" nell'argomento codifica dei caratteri in .NET .

Vedi anche

Si applica a

GetString(Byte[], Int32, Int32)

Origine:
Encoding.cs
Origine:
Encoding.cs
Origine:
Encoding.cs

Quando ne viene eseguito l'override in una classe derivata, decodifica una sequenza di byte dalla matrice di byte specificata in una stringa.

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

Parametri

bytes
Byte[]

Matrice di byte contenente la sequenza di byte da decodificare.

index
Int32

Indice del primo byte da decodificare.

count
Int32

Numero di byte da decodificare.

Restituisce

Stringa contenente i risultati di decodifica della sequenza di byte specificata.

Eccezioni

La matrice di byte contiene punti di codice Unicode non validi.

bytes è null.

index o count è minore di zero.

-oppure-

index e count non indicano un intervallo valido in bytes.

Si è verificato un fallback (per altre informazioni, vedere Codifica dei caratteri in .NET)

-e-

DecoderFallback è impostato su DecoderExceptionFallback.

Esempio

Nell'esempio seguente viene letta una stringa con codifica UTF-8 da un file binario rappresentato da un FileStream oggetto. Per i file di dimensioni inferiori a 2.048 byte, il contenuto dell'intero file viene letto in una matrice di byte e viene chiamato il GetString(Byte[], Int32, Int32) metodo per eseguire la decodifica. Per i file di dimensioni maggiori, legge 2.048 byte alla volta in una matrice di byte, chiama il Decoder.GetCharCount(Byte[], Int32, Int32) metodo per determinare il numero di caratteri contenuti nella matrice e quindi chiama il Decoder.GetChars(Byte[], Int32, Int32, Char[], Int32) metodo per eseguire la decodifica.

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.

Nell'esempio viene utilizzato il testo seguente, che deve essere salvato in un file con codifica UTF-8 denominato 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.

Commenti

Se i dati da convertire sono disponibili solo in blocchi sequenziali, ad esempio i dati letti da un flusso, o se la quantità di dati è talmente grande da poter essere divisa in blocchi più piccoli, è necessario usare Decoder o rispettivamente il Encoder metodo o fornito dal GetDecoder metodo o il GetEncoder metodo di una classe derivata.

Vedere la sezione Osservazioni dell' Encoding.GetChars argomento di riferimento per una discussione sulla decodifica di tecniche e considerazioni.

Vedi anche

Si applica a