Encoding.GetString Methode

Definition

Wenn sie in einer abgeleiteten Klasse außer Kraft gesetzt wird, decodieren Sie eine Bytesequenz in eine Zeichenfolge.

Überlädt

Name Beschreibung
GetString(Byte[], Int32, Int32)

Wenn eine abgeleitete Klasse überschrieben wird, decodiert eine Bytesequenz aus dem angegebenen Bytearray in eine Zeichenfolge.

GetString(Byte*, Int32)

Wenn sie in einer abgeleiteten Klasse außer Kraft gesetzt wird, decodieren Sie eine angegebene Anzahl von Bytes beginnend mit einer angegebenen Adresse in eine Zeichenfolge.

GetString(Byte[])

Wenn sie in einer abgeleiteten Klasse außer Kraft gesetzt wird, decodieren Sie alle Bytes im angegebenen Bytearray in eine Zeichenfolge.

GetString(ReadOnlySpan<Byte>)

Wenn sie in einer abgeleiteten Klasse überschrieben wird, decodieren Sie alle Bytes im angegebenen Bytebereich in eine Zeichenfolge.

GetString(Byte[], Int32, Int32)

Wenn eine abgeleitete Klasse überschrieben wird, decodiert eine Bytesequenz aus dem angegebenen Bytearray in eine Zeichenfolge.

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 Abfolge von Bytes enthält, die decodiert werden sollen.

index
Int32

Der Index des ersten zu decodierenden Bytes.

count
Int32

Die Anzahl der Bytes, die decodiert werden sollen.

Gibt zurück

Eine Zeichenfolge, die die Ergebnisse der Decodierung der angegebenen Abfolge von Bytes enthält.

Ausnahmen

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

bytes ist null.

index oder count ist kleiner als Null.

-oder-

index und count keinen gültigen Bereich in bytes.

Ein Fallback ist aufgetreten (weitere Informationen finden Sie unter "Zeichencodierung in .NET")

-und-

DecoderFallback ist auf DecoderExceptionFallback festgelegt.

Beispiele

Im folgenden Beispiel wird eine UTF-8-codierte Zeichenfolge aus einer Binärdatei gelesen, die durch ein FileStream Objekt dargestellt wird. Bei Dateien, die kleiner als 2.048 Bytes sind, liest sie den Inhalt der gesamten Datei in ein Bytearray und ruft die GetString(Byte[], Int32, Int32) Methode zum Ausführen der Decodierung auf. 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 zum Ausführen der Decodierung auf.

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.txtgespeichert 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 Datenstrom gelesene Daten) verfügbar sind oder die Datenmenge so groß ist, dass sie in kleinere Blöcke unterteilt werden muss, sollten Sie die Decoder oder die Encoder von der GetDecoder Methode bzw. methode bereitgestellte Methode bzw. Methode GetEncoder einer abgeleiteten Klasse verwenden.

Eine Erläuterung der Decodierungstechniken und Überlegungen finden Sie im Abschnitt "Hinweise" des Encoding.GetChars Referenzthemas.

Weitere Informationen

Gilt für:

GetString(Byte*, Int32)

Wichtig

Diese API ist nicht CLS-kompatibel.

Wenn sie in einer abgeleiteten Klasse außer Kraft gesetzt wird, decodieren Sie eine angegebene Anzahl von Bytes beginnend mit einer angegebenen Adresse in eine Zeichenfolge.

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

Parameter

bytes
Byte*

Ein Zeiger auf ein Bytearray.

byteCount
Int32

Die Anzahl der Bytes, die decodiert werden sollen.

Gibt zurück

Eine Zeichenfolge, die die Ergebnisse der Decodierung der angegebenen Abfolge von Bytes enthält.

Attribute

Ausnahmen

bytes ist ein Nullzeiger.

byteCount ist kleiner als 0 (null).

Ein Fallback ist aufgetreten (eine vollständige Erläuterung finden Sie unter Character-Codierung in .NET).

-und-

DecoderFallback ist auf DecoderExceptionFallback festgelegt.

Hinweise

Die GetString Methode wurde entwickelt, um die Leistung zu optimieren, wenn Sie über einen systemeigenen Zeiger auf ein Bytearray verfügen. Anstatt ein verwaltetes Bytearray zu erstellen und es dann zu decodieren, können Sie diese Methode stattdessen aufrufen, ohne Zwischenobjekte erstellen zu müssen.

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

Eine Erläuterung der Decodierungstechniken und Überlegungen finden Sie im Abschnitt "Hinweise" des Encoding.GetChars Referenzthemas.

Beachten Sie, dass das genaue Verhalten der GetString Methode für eine bestimmte Encoding Implementierung von der für dieses Encoding Objekt definierten Fallbackstrategie abhängt. Weitere Informationen finden Sie im Abschnitt "Auswählen einer Fallbackstrategie" im Thema Character-Codierung in .NET.

Weitere Informationen

Gilt für:

GetString(Byte[])

Wenn sie in einer abgeleiteten Klasse außer Kraft gesetzt wird, decodieren Sie alle Bytes im angegebenen Bytearray in eine Zeichenfolge.

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 Abfolge von Bytes enthält, die decodiert werden sollen.

Gibt zurück

Eine Zeichenfolge, die die Ergebnisse der Decodierung der angegebenen Abfolge von Bytes enthält.

Ausnahmen

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

bytes ist null.

Ein Fallback ist aufgetreten (weitere Informationen finden Sie unter "Zeichencodierung in .NET")

-und-

DecoderFallback ist auf DecoderExceptionFallback festgelegt.

Beispiele

Im folgenden Beispiel wird eine UTF-8-codierte Zeichenfolge aus einer Binärdatei gelesen, die durch ein FileStream Objekt dargestellt wird. Bei Dateien, die kleiner als 2.048 Bytes sind, liest sie den Inhalt der gesamten Datei in ein Bytearray und ruft die GetString(Byte[]) Methode zum Ausführen der Decodierung auf. 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 zum Ausführen der Decodierung auf.

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.txtgespeichert 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 Datenstrom gelesene Daten) verfügbar sind oder die Datenmenge so groß ist, dass sie in kleinere Blöcke unterteilt werden muss, sollten Sie das Decoder von der GetDecoder Methode einer abgeleiteten Klasse zurückgegebene Objekt verwenden.

Eine Erläuterung der Decodierungstechniken und Überlegungen finden Sie im Abschnitt "Hinweise" des Encoding.GetChars Referenzthemas.

Beachten Sie, dass das genaue Verhalten der GetString Methode für eine bestimmte Encoding Implementierung von der für dieses Encoding Objekt definierten Fallbackstrategie abhängt. Weitere Informationen finden Sie im Abschnitt "Auswählen einer Fallbackstrategie" im Thema Character-Codierung in .NET.

Weitere Informationen

Gilt für:

GetString(ReadOnlySpan<Byte>)

Wenn sie in einer abgeleiteten Klasse überschrieben wird, decodieren Sie alle Bytes im angegebenen Bytebereich 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, um eine Unicode-Zeichenfolge zu decodieren.

Gibt zurück

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

Hinweise

Die GetString Methode wurde entwickelt, um die Leistung zu optimieren. Anstatt ein verwaltetes Bytearray zu erstellen und es dann zu decodieren, können Sie diese Methode stattdessen aufrufen, ohne Zwischenobjekte erstellen zu müssen.

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

Eine Erläuterung der Decodierungstechniken und Überlegungen finden Sie im Abschnitt "Hinweise" des Encoding.GetChars Referenzthemas.

Beachten Sie, dass das genaue Verhalten der GetString Methode für eine bestimmte Encoding Implementierung von der für dieses Encoding Objekt definierten Fallbackstrategie abhängt. Weitere Informationen finden Sie im Abschnitt "Auswählen einer Fallbackstrategie" im Thema Character-Codierung in .NET.

Gilt für: