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

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.

Gilt für:

Weitere Informationen