UnicodeEncoding.GetString(Byte[], Int32, Int32) Methode

Definition

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

String

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 GetByteCount die Methode aufgerufen wird, um zu bestimmen, wie viele Bytes für eine codierte Zeichenfolge erforderlich sind und dann die Größe des Bytereihenfolgezeichens (BOM) hinzufü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 Methode aufgerufen, um die GetString Zeichenfolge zu entschlüsseln.

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 dekodierte Zeichenfolge von der ursprünglichen Zeichenfolge unterscheidet, da sie mit einem 16-Bit-Bytereihenfolgezeichen U+FFFD beginnt. Dies bedeutet, dass die beiden Zeichenfolgen als ungleich verglichen werden und dass, wenn die Zeichenfolge ausgegeben wird, die BOM als Ersatzzeichen "?" angezeigt wird. Um die BOM am Anfang der Zeichenfolge zu entfernen, können Sie die String.TrimStart Methode aufrufen.

Hinweise

Bei der Fehlererkennung führt eine ungültige Sequenz dazu, dass diese Methode eine ArgumentException. Ohne Fehlererkennung werden ungültige Sequenzen ignoriert, und keine Ausnahme wird ausgelöst.

Wenn der zu decodierte Bytebereich die Bytereihenfolge (BOM) und das Bytearray durch eine Methode eines nicht-BOM-bewussten Typs zurückgegeben wurde, wird das Zeichen U+FFFE in das von dieser Methode zurückgegebene Zeichenarray eingeschlossen. Sie können es entfernen, indem Sie die String.TrimStart Methode aufrufen.

Daten, die konvertiert werden sollen, z. B. Datenlesedaten aus einem Datenstrom, 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.

Gilt für

Siehe auch