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 string GetString (byte[] bytes);

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.

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

.NET 9 e altre versioni
Prodotto Versioni
.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>)

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 string GetString (ReadOnlySpan<byte> bytes);

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

.NET 9 e altre versioni
Prodotto Versioni
.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)

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.

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

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

.NET 9 e altre versioni
Prodotto Versioni
.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)

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 string GetString (byte[] bytes, int index, int count);

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.

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

.NET 9 e altre versioni
Prodotto Versioni
.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