Encoding.GetPreamble Methode

Definition

Wenn eine abgeleitete Klasse überschrieben wird, wird eine Bytesequenz zurückgegeben, die die verwendete Codierung angibt.

public:
 virtual cli::array <System::Byte> ^ GetPreamble();
public virtual byte[] GetPreamble();
abstract member GetPreamble : unit -> byte[]
override this.GetPreamble : unit -> byte[]
Public Overridable Function GetPreamble () As Byte()

Gibt zurück

Byte[]

Ein Bytearray mit einer Bytesequenz, die die verwendete Codierung angibt.

-oder-

Ein Bytearray der Länge Null, wenn kein Präambel erforderlich ist.

Beispiele

Im folgenden Beispiel wird die Bytereihenfolge der Codierung basierend auf der Präambel bestimmt.

using System;
using System.Text;

namespace GetPreambleExample
{
   class GetPreambleExampleClass
   {
      static void Main()
      {
         Encoding unicode = Encoding.Unicode;

         // Get the preamble for the Unicode encoder. 
         // In this case the preamble contains the byte order mark (BOM).
         byte[] preamble = unicode.GetPreamble();

         // Make sure a preamble was returned 
         // and is large enough to contain a BOM.
         if(preamble.Length >= 2)
         {
            if(preamble[0] == 0xFE && preamble[1] == 0xFF)
            {
               Console.WriteLine("The Unicode encoder is encoding in big-endian order.");
            }
            else if(preamble[0] == 0xFF && preamble[1] == 0xFE)
            {
               Console.WriteLine("The Unicode encoder is encoding in little-endian order.");
            }
         }
      }
   }
}

/*
This code produces the following output.

The Unicode encoder is encoding in little-endian order.

*/
Imports System.Text

Namespace GetPreambleExample
   Class GetPreambleExampleClass
      Shared Sub Main()
         Dim [unicode] As Encoding = Encoding.Unicode

         ' Get the preamble for the Unicode encoder. 
         ' In this case the preamble contains the byte order mark (BOM).
         Dim preamble As Byte() = [unicode].GetPreamble()

         ' Make sure a preamble was returned 
         ' and is large enough to contain a BOM.
         If preamble.Length >= 2 Then
            If preamble(0) = &HFE And preamble(1) = &HFF Then
               Console.WriteLine("The Unicode encoder is encoding in big-endian order.")
            Else
               If preamble(0) = &HFF And preamble(1) = &HFE Then
                  Console.WriteLine("The Unicode encoder is encoding in little-endian order.")
               End If
            End If
         End If
      End Sub
   End Class
End Namespace

'This code produces the following output.
'
'The Unicode encoder is encoding in little-endian order.
'

Hinweise

Optional stellt das Encoding Objekt eine Präambel bereit, bei der es sich um ein Bytearray handelt, das der Sequenz von Bytes vorangestellt werden kann, die sich aus dem Codierungsprozess ergibt. Wenn das Präambel eine Bytereihenfolgemarke (in Unicode, Codepunkt U+FEFF) enthält, hilft es dem Decoder, die Bytereihenfolge und das Transformationsformat oder UTF zu bestimmen.

Das Unicode-Bytereihenfolgezeichen (BOM) wird wie folgt serialisiert (hexadezimal):

  • UTF-8: EF BB BF

  • UTF-16 big endian byte order: FE FF

  • UTF-16 little endian byte order: FF FE

  • UTF-32 big endian byte order: 00 00 FE FF

  • UTF-32 little endian byte order: FF FE 00 00

Sie sollten die BOM verwenden, da sie nahezu bestimmte Identifizierung einer Codierung für Dateien bereitstellt, die andernfalls einen Verweis auf das Encoding Objekt verloren haben, z. B. nicht markierte oder nicht ordnungsgemäß markierte Webdaten oder zufällige Textdateien, die gespeichert wurden, wenn ein Unternehmen keine internationalen Bedenken oder andere Daten hatte. Häufig können Benutzerprobleme vermieden werden, wenn Daten konsistent und ordnungsgemäß markiert sind, vorzugsweise in UTF-8 oder UTF-16.

Für Standards, die einen Codierungstyp bereitstellen, ist eine BOM etwas redundant. Es kann jedoch verwendet werden, um einem Server zu helfen, den richtigen Codierungsheader zu senden. Alternativ kann sie als Fallback verwendet werden, falls die Codierung andernfalls verloren geht.

Es gibt einige Nachteile bei der Verwendung einer BOM. Beispielsweise kann es schwierig sein, die Datenbankfelder zu beschränken, die eine BOM verwenden. Die Verkettung von Dateien kann beispielsweise auch ein Problem sein, wenn Dateien so zusammengeführt werden, dass ein unnötiges Zeichen in der Mitte der Daten enden kann. Trotz der wenigen Nachteile wird die Verwendung eines BOM jedoch dringend empfohlen.

Weitere Informationen zur Bytereihenfolge und zum Bytereihenfolgezeichen finden Sie im Unicode-Standard auf der Unicode-Startseite.

Vorsicht

Um sicherzustellen, dass die codierten Bytes ordnungsgemäß decodiert werden, sollten Sie mit einem Präambel codierte Bytes voranstellen. Die meisten Codierungen bieten jedoch keine Präambel. Um sicherzustellen, dass die codierten Bytes ordnungsgemäß decodiert werden, sollten Sie eine Unicode-Codierung verwenden, d. h. mit UTF8EncodingUnicodeEncodingUTF32Encodingeinem Präambel.

Gilt für: