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.
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.