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

Definition

Decodiert einen Bytebereich aus einem Bytearray in eine Zeichenfolge.Decodes a range of bytes from a byte array into a string.

public:
 override System::String ^ GetString(cli::array <System::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
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.The byte array containing the sequence of bytes to decode.

index
Int32 Int32 Int32 Int32

Der Index des ersten zu decodierenden Bytes.The index of the first byte to decode.

count
Int32 Int32 Int32 Int32

Die Anzahl der zu decodierenden Bytes.The number of bytes to decode.

Gibt zurück

Ein String-Objekt, das die Ergebnisse der Decodierung der angegebenen Bytefolge enthält.A String object containing the results of decoding the specified sequence of bytes.

Ausnahmen

index oder count ist kleiner als 0 (null).index or count is less than zero.

- oder --or- index und count geben keinen gültigen Bereich in bytes an.index and count do not denote a valid range in bytes.

Die Fehlererkennung ist aktiviert, und bytes enthält eine ungültige Folge von Bytes.Error detection is enabled, and bytes contains an invalid sequence of bytes.

Es ist ein Fallback aufgetreten (eine ausführliche Erläuterung finden Sie unter Zeichencodierung in .NET Framework).A fallback occurred (see Character Encoding in the .NET Framework for fuller explanation) - und --and- Für DecoderFallback ist DecoderExceptionFallback festgelegt.DecoderFallback is set to DecoderExceptionFallback.

Beispiele

Im folgenden Beispiel wird ein Array initialisiert, indem GetByteCount die-Methode aufgerufen wird, um genau zu bestimmen, wie viele Bytes für eine codierte Zeichenfolge erforderlich sind, und dann die Größe der Byte Reihenfolge Markierung (BOM) hinzuzufügen.The following example initializes an array by calling the GetByteCount method to determine exactly how many bytes are required for an encoded string and then adding the size of the byte order mark (BOM). Im Beispiel wird dann die GetPreamble -Methode aufgerufen, um die BOM im Array zu speichern GetBytes , bevor die-Methode aufgerufen wird, um die codierten Bytes im Array zu speichern.The example then calls the GetPreamble method to store the BOM to the array before calling the GetBytes method to store the encoded bytes to the array. Im Beispiel wird dann die GetString -Methode aufgerufen, um die Zeichenfolge zu decodieren.The example then calls the GetString method to decode the string.

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 die decodierte Zeichenfolge in diesem Fall von der ursprünglichen Zeichenfolge abweicht, da Sie mit einer 16-Bit-Byte Reihenfolge Markierung U + FFFD beginnt.Note that in this case the decoded string differs from the original string, since it begins with a 16-bit byte order mark U+FFFD. Dies bedeutet, dass die beiden Zeichen folgen als ungleich verglichen werden und dass, wenn die Zeichenfolge ausgegeben wird, die BOM als Ersatz Zeichen "?" angezeigt wird.This means that the two strings will compare as unequal, and that if the string is output, the BOM will be displayed as the replacement character "?". Um die BOM am Anfang der Zeichenfolge zu entfernen, können Sie die String.TrimStart -Methode aufzurufen.To remove the BOM at the beginning of the string, you can call the String.TrimStart method.

Hinweise

Bei der Fehlererkennung bewirkt eine ungültige Sequenz, dass diese Methode ArgumentExceptioneine auslöst.With error detection, an invalid sequence causes this method to throw a ArgumentException. Ohne Fehlererkennung werden ungültige Sequenzen ignoriert, und es wird keine Ausnahme ausgelöst.Without error detection, invalid sequences are ignored, and no exception is thrown.

Wenn der zu decodierte Byte Bereich die Byte Reihenfolge-Marke (Byte Order Mark, BOM) einschließt und das Bytearray von einer Methode eines nicht-BOM-fähigen Typs zurückgegeben wurde, ist das Zeichen U + FFFE in dem von dieser Methode zurückgegebenen Zeichen Array enthalten.If the range of bytes to be decoded includes the byte order mark (BOM) and the byte array was returned by a method of a non-BOM aware type, the character U+FFFE is included in the character array returned by this method. Sie können es entfernen, indem Sie String.TrimStart die-Methode aufrufen.You can remove it by calling the String.TrimStart method.

Daten, die konvertiert werden sollen, z. b. aus einem Stream gelesene Daten, sind möglicherweise nur in sequenziellen Blöcken verfügbar.Data to be converted, such as data read from a stream, might be available only in sequential blocks. 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.In this case, or if the amount of data is so large that it needs to be divided into smaller blocks, the application should use the Decoder or the Encoder object provided by the GetDecoder or the GetEncoder method, respectively.

Gilt für:

Siehe auch