Encoding.GetPreamble-Methode
Beim Überschreiben in einer abgeleiteten Klasse wird eine Bytefolge zurückgegeben, die die verwendete Codierung angibt.
Namespace: System.Text
Assembly: mscorlib (in mscorlib.dll)
Syntax
'Declaration
Public Overridable Function GetPreamble As Byte()
'Usage
Dim instance As Encoding
Dim returnValue As Byte()
returnValue = instance.GetPreamble
public virtual byte[] GetPreamble ()
public:
virtual array<unsigned char>^ GetPreamble ()
public byte[] GetPreamble ()
public function GetPreamble () : byte[]
Rückgabewert
Ein Bytearray, das eine Bytefolge enthält, in der die verwendete Codierung angegeben ist. - oder - Ein Bytearray der Länge 0 (null), wenn keine Präambel erforderlich ist.
Hinweise
Die UTF-16- und UTF-32-Encoder können die Big-Endian-Bytereihenfolge (mit dem höchstwertigen Byte an erster Stelle) oder die Little-Endian-Bytereihenfolge (mit dem niedrigstwertigen Byte an erster Stelle) verwenden. Beispielsweise wird der lateinische Großbuchstabe A (U+0041) wie folgt serialisiert (Hexadezimalwert):
UTF-16-Big-Endian-Bytereihenfolge: 00 41
UTF-16-Little-Endian-Bytereihenfolge: 41 00
UTF-32-Big-Endian-Bytereihenfolge: 00 00 00 41
UTF-32-Little-Endian-Bytereihenfolge: 41 00 00 00
Optional stellt Encoding eine Präambel bereit. Dabei handelt es sich um ein Bytearray, das der Bytefolge vorangestellt werden kann, die sich aus dem Codierungsprozess ergibt. Falls die Präambel eine Bytereihenfolgemarkierung (in Unicode: Codepunkt U+FEFF) enthält, kann der Decoder daraus die Bytereihenfolge und das Transformationsformat oder UTF ermitteln. Die Unicode-Bytereihenfolgemarkierung wird wie folgt serialisiert (Hexadezimalwert):
UTF-8: EF BB BF
UTF-16-Big-Endian-Bytereihenfolge: FE FF
UTF-16-Little-Endian-Bytereihenfolge: FF FE
UTF-32-Big-Endian-Bytereihenfolge: 00 00 FE FF
UTF-32-Little-Endian-Bytereihenfolge: FF FE 00 00
Im Allgemeinen ist es effizienter, Unicode-Zeichen in der systemeigenen Bytereihenfolge zu speichern. So ist es besser, die Little-Endian-Bytereihenfolge auf entsprechenden Plattformen, beispielsweise auf Intel-Computern, zu verwenden.
Weitere Informationen über die Bytereihenfolge und die Bytereihenfolgemarkierung finden Sie im Unicode-Standard unter http://www.unicode.org (nur auf Englisch verfügbar).
Warnung
Damit die codierten Bytes ordnungsgemäß decodiert werden, stellen Sie codierten Bytes eine Präambel voran. Die meisten Codierungen stellen jedoch keine Präambel bereit. Stellen Sie sicher, dass die codierten Bytes einwandfrei decodiert werden, indem Sie eine Unicode-Codierung (also UTF8Encoding, UnicodeEncoding oder UTF32Encoding) mit einer Präambel verwenden.
Beispiel
Im folgenden Codebeispiel wird die Bytereihenfolge der Codierung auf Grundlage der Präambel bestimmt.
Imports System
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
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 containa 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.");
}
}
}
}
}
using namespace System;
using namespace System::Text;
int main()
{
Encoding^ unicode = Encoding::Unicode;
// Get the preamble for the Unicode encoder.
// In this case the preamblecontains the Byte order mark (BOM).
array<Byte>^preamble = unicode->GetPreamble();
// Make sure a preamble was returned
// and is large enough to containa BOM.
if ( preamble->Length >= 2 )
{
// if (preamble->Item[0] == 0xFE && preamble->Item[1] == 0xFF)
if ( preamble[ 0 ] == 0xFE && preamble[ 1 ] == 0xFF )
{
Console::WriteLine( "The Unicode encoder is encoding in big-endian order." );
}
// else if (preamble->Item[0] == 0xFF && preamble->Item[1] == 0xFE)
else
// else if (preamble->Item[0] == 0xFF && preamble->Item[1] == 0xFE)
if ( preamble[ 0 ] == 0xFF && preamble[ 1 ] == 0xFE )
{
Console::WriteLine( "The Unicode encoder is encoding in little-endian order." );
}
}
}
package GetPreambleExample;
import System.*;
import System.Text.*;
class GetPreambleExampleClass
{
public static void main(String[] args)
{
Encoding unicode = Encoding.get_Unicode();
// Get the preamble for the Unicode encoder.
// In this case the preamble contains the byte order mark (BOM).
ubyte preamble[] = unicode.GetPreamble();
// Make sure a preamble was returned
// and is large enough to containa 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.");
}
}
}
} //main
} //GetPreambleExampleClass
Plattformen
Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.
Versionsinformationen
.NET Framework
Unterstützt in: 2.0, 1.1, 1.0
.NET Compact Framework
Unterstützt in: 2.0, 1.0