UnicodeEncoding.GetString(Byte[], Int32, Int32) 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.
Decodiert einen Bytebereich aus einem Bytearray in eine Zeichenfolge.
public:
override System::String ^ GetString(cli::array <System::Byte> ^ bytes, int index, int count);
public override string GetString (byte[] bytes, int index, int count);
[System.Runtime.InteropServices.ComVisible(false)]
public override string GetString (byte[] bytes, int index, int count);
override this.GetString : byte[] * int * int -> string
[<System.Runtime.InteropServices.ComVisible(false)>]
override this.GetString : byte[] * int * int -> string
Public Overrides 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
Ein String-Objekt, das die Ergebnisse der Decodierung der angegebenen Bytefolge enthält.
- Attribute
Ausnahmen
bytes
ist null
(Nothing
).
index
oder count
ist kleiner als 0.
- oder -
index
und count
geben keinen gültigen Bereich in bytes
an.
Die Fehlererkennung ist aktiviert, und bytes
enthält eine ungültige Folge von Bytes.
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 ein Array initialisiert, indem die GetByteCount -Methode aufgerufen wird, um zu bestimmen, wie viele Bytes für eine codierte Zeichenfolge erforderlich sind, und dann die Größe der Bytereihenfolgemarkierung (BOM) hinzuzufügen. Im Beispiel wird dann die GetPreamble -Methode aufgerufen, um die BOM im Array zu speichern, bevor die GetBytes -Methode aufgerufen wird, um die codierten Bytes im Array zu speichern. Im Beispiel wird dann die GetString -Methode aufgerufen, um die Zeichenfolge zu decodieren.
using System;
using System.Text;
public class Example
{
public static void Main()
{
UTF8Encoding utf8 = new UTF8Encoding(true, true);
String s = "It was the best of times, it was the worst of times...";
// We need to dimension the array, since we'll populate it with 2 method calls.
Byte[] bytes = new Byte[utf8.GetByteCount(s) + utf8.GetPreamble().Length];
// Encode the string.
Array.Copy(utf8.GetPreamble(), bytes, utf8.GetPreamble().Length);
utf8.GetBytes(s, 0, s.Length, bytes, utf8.GetPreamble().Length);
// Decode the byte array.
String s2 = utf8.GetString(bytes, 0, bytes.Length);
Console.WriteLine(s2);
}
}
// The example displays the following output:
// ?It was the best of times, it was the worst of times...
Imports System.Text
Module Example
Public Sub Main()
Dim utf8 As New UTF8Encoding(True, True)
Dim s As String = "It was the best of times, it was the worst of times..."
' We need to dimension the array, since we'll populate it with 2 method calls.
Dim bytes(utf8.GetByteCount(s) + utf8.GetPreamble().Length - 1) As Byte
' Encode the string.
Array.Copy(utf8.GetPreamble(), bytes, utf8.GetPreamble().Length)
utf8.GetBytes(s, 0, s.Length, bytes, utf8.GetPreamble().Length)
' Decode the byte array.
Dim s2 As String = utf8.GetString(bytes, 0, bytes.Length)
Console.WriteLine(s2)
End Sub
End Module
' The example displays the following output:
' ?It was the best of times, it was the worst of times...
Beachten Sie, dass sich in diesem Fall die decodierte Zeichenfolge von der ursprünglichen Zeichenfolge unterscheidet, da sie mit einer 16-Bit-Bytereihenfolgenmarkierung U+FFFD beginnt. Dies bedeutet, dass die beiden Zeichenfolgen als ungleich verglichen werden und dass die BOM als Ersatzzeichen "?" angezeigt wird, wenn die Zeichenfolge ausgegeben wird. Um die BoM am Anfang der Zeichenfolge zu entfernen, können Sie die String.TrimStart -Methode aufrufen.
Hinweise
Bei der Fehlererkennung bewirkt eine ungültige Sequenz, dass diese Methode einen ArgumentExceptionauslöst. Ohne Fehlererkennung werden ungültige Sequenzen ignoriert, und es wird keine Ausnahme ausgelöst.
Wenn der zu decodierte Bytesbereich die Bytereihenfolgenmarkierung (BYM) enthält und das Bytearray von einer Methode eines nicht BOM-fähigen Typs zurückgegeben wurde, wird das Zeichen U+FFFE in das Zeichenarray eingeschlossen, das von dieser Methode zurückgegeben wird. Sie können sie entfernen, indem Sie die String.TrimStart -Methode aufrufen.
Zu konvertierende Daten, z. B. Daten, die aus einem Stream gelesen werden, sind möglicherweise nur in sequenziellen Blöcken verfügbar. In diesem Fall oder wenn die Menge der Daten so umfangreich ist, dass er in kleinere Blöcke aufgeteilt werden muss, sollte die Anwendung verwenden die Decoder oder Encoder Objekt bereitgestellt werden, indem Sie die GetDecoder oder die GetEncoder -Methode, bzw.