Encoding.GetPreamble 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.
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
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.