Encoding.GetString Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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.