Teilen über


Encoding.GetString Methode

Definition

Beim Überschreiben in einer abgeleiteten Klasse wird eine Bytefolge in eine Zeichenfolge decodiert.

Überlädt

GetString(Byte[])

Beim Überschreiben in einer abgeleiteten Klasse werden alle Bytes im angegebenen Bytearray in eine Zeichenfolge decodiert.

GetString(ReadOnlySpan<Byte>)

Decodiert beim Überschreiben in einer abgeleiteten Klasse alle Bytes in der angegebenen Bytespanne in eine Zeichenfolge.

GetString(Byte*, Int32)

Beim Überschreiben in einer abgeleiteten Klasse wird eine angegebene Anzahl von Bytes ab einer angegebenen Adresse in eine Zeichenfolge decodiert.

GetString(Byte[], Int32, Int32)

Beim Überschreiben in einer abgeleiteten Klasse wird eine Bytefolge aus dem angegebenen Bytearray in eine Zeichenfolge decodiert.

GetString(Byte[])

Quelle:
Encoding.cs
Quelle:
Encoding.cs
Quelle:
Encoding.cs

Beim Überschreiben in einer abgeleiteten Klasse werden alle Bytes im angegebenen Bytearray in eine Zeichenfolge decodiert.

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

Parameter

bytes
Byte[]

Das Bytearray, das die zu decodierende Bytefolge enthält.

Gibt zurück

Eine Zeichenfolge, die die Ergebnisse der Decodierung der angegebenen Bytefolge enthält.

Ausnahmen

Das Bytearray enthält ungültige Unicode-Codepunkte.

bytes ist null.

Es ist ein Fallback aufgetreten (weitere Informationen finden Sie unter Zeichencodierung in .NET).

- und -

Für DecoderFallback ist DecoderExceptionFallback festgelegt.

Beispiele

Im folgenden Beispiel wird eine UTF-8-codierte Zeichenfolge aus einer Binärdatei gelesen, die durch ein-Objekt dargestellt wird FileStream . Bei Dateien, die kleiner als 2.048 Bytes sind, liest der Inhalt der gesamten Datei in ein Bytearray und ruft die- GetString(Byte[]) Methode auf, um die Decodierung auszuführen. Bei größeren Dateien liest Sie jeweils 2.048 Bytes in ein Bytearray, ruft die- Decoder.GetCharCount(Byte[], Int32, Int32) Methode auf, um zu bestimmen, wie viele Zeichen im Array enthalten sind, und ruft dann die- Decoder.GetChars(Byte[], Int32, Int32, Char[], Int32) Methode auf, um die Decodierung auszuführen.

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.

Im Beispiel wird der folgende Text verwendet, der in einer UTF-8-codierten Datei mit dem Namen "Utf8Example.txt" gespeichert werden soll.

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.

Hinweise

Wenn die zu konvertierenden Daten nur in sequenziellen Blöcken (z. b. aus einem Stream gelesene Daten) verfügbar sind, oder wenn die Menge der Daten so groß ist, dass Sie in kleinere Blöcke aufgeteilt werden muss, sollten Sie das Decoder von der- GetDecoder Methode einer abgeleiteten Klasse zurückgegebene-Objekt verwenden.

Weitere Informationen zu Encoding.GetChars Decodierungs Techniken und-Überlegungen finden Sie im Abschnitt "Hinweise" des Referenz Themas.

Beachten Sie, dass das genaue Verhalten der- GetString Methode für eine bestimmte- Encoding Implementierung von der für dieses Objekt definierten Fall Back Strategie abhängt Encoding . Weitere Informationen finden Sie im Abschnitt "Auswählen einer Fall Back Strategie" des Themas Zeichencodierung in .net .

Weitere Informationen

Gilt für:

GetString(ReadOnlySpan<Byte>)

Quelle:
Encoding.cs
Quelle:
Encoding.cs
Quelle:
Encoding.cs

Decodiert beim Überschreiben in einer abgeleiteten Klasse alle Bytes in der angegebenen Bytespanne in eine Zeichenfolge.

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

Parameter

bytes
ReadOnlySpan<Byte>

Eine schreibgeschützte Bytespanne, die in eine Unicode-Zeichenfolge decodiert werden soll.

Gibt zurück

Eine Zeichenfolge, die die decodierten Bytes aus der angegebenen schreibgeschützten Spanne enthält.

Hinweise

Die- GetString Methode wurde entwickelt, um die Leistung zu optimieren. Anstatt ein verwaltetes Bytearray zu erstellen und anschließend zu decodieren, können Sie stattdessen diese Methode aufrufen, ohne zwischen Objekte erstellen zu müssen.

Wenn die zu konvertierenden Daten nur in sequenziellen Blöcken (z. b. aus einem Stream gelesene Daten) verfügbar sind, oder wenn die Menge der Daten so groß ist, dass Sie in kleinere Blöcke aufgeteilt werden muss, sollten Sie das Decoder von der- GetDecoder Methode einer abgeleiteten Klasse zurückgegebene-Objekt verwenden.

Weitere Informationen zu Encoding.GetChars Decodierungs Techniken und-Überlegungen finden Sie im Abschnitt "Hinweise" des Referenz Themas.

Beachten Sie, dass das genaue Verhalten der- GetString Methode für eine bestimmte- Encoding Implementierung von der für dieses Objekt definierten Fall Back Strategie abhängt Encoding . Weitere Informationen finden Sie im Abschnitt "Auswählen einer Fall Back Strategie" des Themas Zeichencodierung in .net .

Gilt für:

GetString(Byte*, Int32)

Quelle:
Encoding.cs
Quelle:
Encoding.cs
Quelle:
Encoding.cs

Wichtig

Diese API ist nicht CLS-kompatibel.

Beim Überschreiben in einer abgeleiteten Klasse wird eine angegebene Anzahl von Bytes ab einer angegebenen Adresse in eine Zeichenfolge decodiert.

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

Parameter

bytes
Byte*

Ein Zeiger auf ein Bytearray.

byteCount
Int32

Die Anzahl der zu decodierenden Bytes.

Gibt zurück

Eine Zeichenfolge, die die Ergebnisse der Decodierung der angegebenen Bytefolge enthält.

Attribute

Ausnahmen

bytes ist ein NULL-Zeiger

byteCount ist kleiner als Null.

Ein Fallback ist aufgetreten (eine ausführliche Erläuterung finden Sie unter Zeichencodierung in .NET)

- und -

Für DecoderFallback ist DecoderExceptionFallback festgelegt.

Hinweise

Die- GetString Methode dient zur Optimierung der Leistung, wenn Sie über einen systemeigenen Zeiger auf ein Bytearray verfügen. Anstatt ein verwaltetes Bytearray zu erstellen und anschließend zu decodieren, können Sie stattdessen diese Methode aufrufen, ohne zwischen Objekte erstellen zu müssen.

Wenn die zu konvertierenden Daten nur in sequenziellen Blöcken (z. b. aus einem Stream gelesene Daten) verfügbar sind, oder wenn die Menge der Daten so groß ist, dass Sie in kleinere Blöcke aufgeteilt werden muss, sollten Sie das Decoder von der- GetDecoder Methode einer abgeleiteten Klasse zurückgegebene-Objekt verwenden.

Weitere Informationen zu Encoding.GetChars Decodierungs Techniken und-Überlegungen finden Sie im Abschnitt "Hinweise" des Referenz Themas.

Beachten Sie, dass das genaue Verhalten der- GetString Methode für eine bestimmte- Encoding Implementierung von der für dieses Objekt definierten Fall Back Strategie abhängt Encoding . Weitere Informationen finden Sie im Abschnitt "Auswählen einer Fall Back Strategie" des Themas Zeichencodierung in .net .

Weitere Informationen

Gilt für:

GetString(Byte[], Int32, Int32)

Quelle:
Encoding.cs
Quelle:
Encoding.cs
Quelle:
Encoding.cs

Beim Überschreiben in einer abgeleiteten Klasse wird eine Bytefolge aus dem angegebenen Bytearray in eine Zeichenfolge decodiert.

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

Parameter

bytes
Byte[]

Das Bytearray, das die zu decodierende Bytefolge enthält.

index
Int32

Der Index des ersten zu decodierenden Bytes.

count
Int32

Die Anzahl der zu decodierenden Bytes.

Gibt zurück

Eine Zeichenfolge, die die Ergebnisse der Decodierung der angegebenen Bytefolge enthält.

Ausnahmen

Das Bytearray enthält ungültige Unicode-Codepunkte.

bytes ist null.

index oder count ist kleiner als 0.

- oder -

index und count geben keinen gültigen Bereich in bytes an.

Es ist ein Fallback aufgetreten (weitere Informationen finden Sie unter Zeichencodierung in .NET).

- und -

Für DecoderFallback ist DecoderExceptionFallback festgelegt.

Beispiele

Im folgenden Beispiel wird eine UTF-8-codierte Zeichenfolge aus einer Binärdatei gelesen, die durch ein-Objekt dargestellt wird FileStream . Bei Dateien, die kleiner als 2.048 Bytes sind, liest der Inhalt der gesamten Datei in ein Bytearray und ruft die- GetString(Byte[], Int32, Int32) Methode auf, um die Decodierung auszuführen. Bei größeren Dateien liest Sie jeweils 2.048 Bytes in ein Bytearray, ruft die- Decoder.GetCharCount(Byte[], Int32, Int32) Methode auf, um zu bestimmen, wie viele Zeichen im Array enthalten sind, und ruft dann die- Decoder.GetChars(Byte[], Int32, Int32, Char[], Int32) Methode auf, um die Decodierung auszuführen.

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.

Im Beispiel wird der folgende Text verwendet, der in einer UTF-8-codierten Datei mit dem Namen "Utf8Example.txt" gespeichert werden soll.

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.

Hinweise

Wenn die zu konvertierenden Daten nur in sequenziellen Blöcken (z. b. aus einem Stream gelesene Daten) verfügbar sind, oder wenn die Menge der Daten so groß ist, dass Sie in kleinere Blöcke aufgeteilt werden muss, sollten Sie den Decoder oder den bereitstellen, der Encoder von der- GetDecoder Methode bzw. der- GetEncoder Methode der abgeleiteten Klasse bereitgestellt wird.

Weitere Informationen zu Encoding.GetChars Decodierungs Techniken und-Überlegungen finden Sie im Abschnitt "Hinweise" des Referenz Themas.

Weitere Informationen

Gilt für: