Encoding.GetString Metoda

Definicja

W przypadku przesłonięć w klasie pochodnej dekoduje sekwencję bajtów na ciąg.

Przeciążenia

GetString(Byte[])

W przypadku przesłonięć w klasie pochodnej dekoduje wszystkie bajty w określonej tablicy bajtów na ciąg.

GetString(ReadOnlySpan<Byte>)

W przypadku przesłonięć w klasie pochodnej dekoduje wszystkie bajty w określonym zakresie bajtów na ciąg.

GetString(Byte*, Int32)

W przypadku przesłonięć w klasie pochodnej dekoduje określoną liczbę bajtów, zaczynając od określonego adresu, na ciąg.

GetString(Byte[], Int32, Int32)

W przypadku przesłonięć w klasie pochodnej dekoduje sekwencję bajtów z określonej tablicy bajtów na ciąg.

GetString(Byte[])

W przypadku przesłonięć w klasie pochodnej dekoduje wszystkie bajty w określonej tablicy bajtów na ciąg.

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

Parametry

bytes
Byte[]

Tablica bajtów zawierająca sekwencję bajtów do dekodowania.

Zwraca

String

Ciąg, który zawiera wyniki dekodowania określonej sekwencji bajtów.

Wyjątki

Tablica bajtów zawiera nieprawidłowe punkty kodu Unicode.

bytes to null.

Wystąpił rezerwowy błąd (aby uzyskać więcej informacji, zobacz Kodowanie znaków na platformie .NET)

-and-

DecoderFallback jest ustawiona na DecoderExceptionFallback wartość .

Przykłady

Poniższy przykład odczytuje ciąg zakodowany w formacie UTF-8 z pliku binarnego reprezentowanego przez FileStream obiekt . W przypadku plików mniejszych niż 2048 bajtów odczytuje zawartość całego pliku do tablicy bajtów i wywołuje metodę w celu wykonania GetString(Byte[]) dekodowania. W przypadku większych plików odczytuje 2048 bajtów jednocześnie do tablicy bajtów, wywołuje metodę w celu określenia, ile znaków znajduje się w tablicy, a następnie wywołuje metodę w celu wykonania Decoder.GetCharCount(Byte[], Int32, Int32) Decoder.GetChars(Byte[], Int32, Int32, Char[], Int32) dekodowania.

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.

W przykładzie użyto następującego tekstu, który powinien zostać zapisany w pliku zakodowanym w formacie UTF-8 o nazwie 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.

Uwagi

Jeśli dane do przekonwertowania są dostępne tylko w blokach sekwencyjnych (takich jak dane odczytane ze strumienia) lub jeśli ilość danych jest tak duża, że trzeba je podzielić na mniejsze bloki, należy użyć obiektu zwróconego przez metodę klasy Decoder GetDecoder pochodnej.

Zobacz sekcję Uwagi w temacie referencyjnym, aby uzyskać Encoding.GetChars omówienie technik dekodowania i zagadnienia.

Należy pamiętać, że dokładne zachowanie metody GetString dla określonej implementacji zależy od Encoding strategii rezerwowej zdefiniowanej dla tego Encoding obiektu. Aby uzyskać więcej informacji, zobacz sekcję "Wybieranie strategii rezerwowej" w temacie Kodowanie znaków na platformie .NET.

Zobacz też

Dotyczy

GetString(ReadOnlySpan<Byte>)

W przypadku przesłonięć w klasie pochodnej dekoduje wszystkie bajty w określonym zakresie bajtów na ciąg.

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

Parametry

bytes
ReadOnlySpan<Byte>

Zakres bajtów tylko do odczytu do dekodowania na ciąg Unicode.

Zwraca

String

Ciąg zawierający zdekodowane bajty z podanego zakresu tylko do odczytu.

Uwagi

Metoda GetString została zaprojektowana w celu zoptymalizowania wydajności. Zamiast tworzyć zarządzaną tablicę bajtów, a następnie dekodować ją, można zamiast tego wywołać tę metodę bez konieczności tworzenia obiektów pośrednich.

Jeśli dane do przekonwertowania są dostępne tylko w blokach sekwencyjnych (takich jak dane odczytane ze strumienia) lub jeśli ilość danych jest tak duża, że trzeba je podzielić na mniejsze bloki, należy użyć obiektu zwróconego przez metodę klasy Decoder GetDecoder pochodnej.

Zobacz sekcję Uwagi w temacie referencyjnym, aby uzyskać Encoding.GetChars omówienie technik dekodowania i zagadnienia.

Należy pamiętać, że dokładne zachowanie metody GetString dla określonej implementacji zależy od Encoding strategii rezerwowej zdefiniowanej dla tego Encoding obiektu. Aby uzyskać więcej informacji, zobacz sekcję "Wybieranie strategii rezerwowej" w temacie Kodowanie znaków na platformie .NET.

Dotyczy

GetString(Byte*, Int32)

Ważne

Ten interfejs API nie jest zgodny ze specyfikacją CLS.

W przypadku przesłonięć w klasie pochodnej dekoduje określoną liczbę bajtów, zaczynając od określonego adresu, na ciąg.

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

Parametry

bytes
Byte*

Wskaźnik do tablicy bajtów.

byteCount
Int32

Liczba bajtów do dekodowania.

Zwraca

String

Ciąg, który zawiera wyniki dekodowania określonej sekwencji bajtów.

Atrybuty

Wyjątki

bytes jest wskaźnikiem o wartości null.

Parametr byteCount ma wartość niższą niż zero.

Wystąpił rezerwowy błąd (zobacz Kodowanie znaków na platformie .NET), aby uzyskać pełne wyjaśnienie)

-and-

DecoderFallback jest ustawiona na DecoderExceptionFallback wartość .

Uwagi

Metoda GetString została zaprojektowana w celu optymalizacji wydajności, gdy masz natywny wskaźnik do tablicy bajtów. Zamiast tworzyć zarządzaną tablicę bajtów, a następnie dekodować ją, można zamiast tego wywołać tę metodę bez konieczności tworzenia obiektów pośrednich.

Jeśli dane do przekonwertowania są dostępne tylko w blokach sekwencyjnych (takich jak dane odczytane ze strumienia) lub jeśli ilość danych jest tak duża, że trzeba je podzielić na mniejsze bloki, należy użyć obiektu zwróconego przez metodę klasy Decoder GetDecoder pochodnej.

Zobacz sekcję Uwagi w temacie referencyjnym, aby uzyskać Encoding.GetChars omówienie technik dekodowania i zagadnienia.

Należy pamiętać, że dokładne zachowanie metody GetString dla określonej implementacji zależy od Encoding strategii rezerwowej zdefiniowanej dla tego Encoding obiektu. Aby uzyskać więcej informacji, zobacz sekcję "Wybieranie strategii rezerwowej" w temacie Kodowanie znaków na platformie .NET.

Zobacz też

Dotyczy

GetString(Byte[], Int32, Int32)

W przypadku przesłonięć w klasie pochodnej dekoduje sekwencję bajtów z określonej tablicy bajtów na ciąg.

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

Parametry

bytes
Byte[]

Tablica bajtów zawierająca sekwencję bajtów do dekodowania.

index
Int32

Indeks pierwszego bajtu do odkodowania.

count
Int32

Liczba bajtów do dekodowania.

Zwraca

String

Ciąg, który zawiera wyniki dekodowania określonej sekwencji bajtów.

Wyjątki

Tablica bajtów zawiera nieprawidłowe punkty kodu Unicode.

bytes to null.

index wartość lub count jest mniejsza niż zero.

-lub-

index i count nie oznaczają prawidłowego zakresu w bytes .

Wystąpił rezerwowy błąd (aby uzyskać więcej informacji, zobacz Kodowanie znaków na platformie .NET)

-and-

DecoderFallback jest ustawiona na DecoderExceptionFallback wartość .

Przykłady

Poniższy przykład odczytuje ciąg zakodowany w formacie UTF-8 z pliku binarnego, który jest reprezentowany przez FileStream obiekt . W przypadku plików mniejszych niż 2048 bajtów odczytuje zawartość całego pliku do tablicy bajtów i wywołuje metodę w celu wykonania GetString(Byte[], Int32, Int32) dekodowania. W przypadku większych plików odczytuje 2048 bajtów jednocześnie do tablicy bajtów, wywołuje metodę w celu określenia, ile znaków znajduje się w tablicy, a następnie wywołuje metodę w celu wykonania Decoder.GetCharCount(Byte[], Int32, Int32) Decoder.GetChars(Byte[], Int32, Int32, Char[], Int32) dekodowania.

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.

W przykładzie użyto następującego tekstu, który powinien zostać zapisany w pliku zakodowanym w formacie UTF-8 o nazwie 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.

Uwagi

Jeśli dane do przekonwertowania są dostępne tylko w blokach sekwencyjnych (takich jak dane odczytane ze strumienia) lub jeśli ilość danych jest tak duża, że trzeba je podzielić na mniejsze bloki, należy użyć metody lub metody albo metody odpowiednio klasy Decoder Encoder GetDecoder GetEncoder pochodnej.

Zobacz sekcję Uwagi w temacie referencyjnym, aby uzyskać Encoding.GetChars omówienie technik dekodowania i zagadnienia.

Zobacz też

Dotyczy