Freigeben über


UnicodeEncoding.GetPreamble-Methode

Gibt eine im UTF-32-Format codierte Unicode-Bytereihenfolgemarkierung zurück, wenn der Konstruktor für diese Instanz eine Bytereihenfolgemarkierung angefordert hat.

Namespace: System.Text
Assembly: mscorlib (in mscorlib.dll)

Syntax

'Declaration
Public Overrides Function GetPreamble As Byte()
'Usage
Dim instance As UnicodeEncoding
Dim returnValue As Byte()

returnValue = instance.GetPreamble
public override byte[] GetPreamble ()
public:
virtual array<unsigned char>^ GetPreamble () override
public byte[] GetPreamble ()
public override function GetPreamble () : byte[]

Rückgabewert

Ein Bytearray mit Unicode-Bytereihenfolgemarkierung, wenn der Konstruktor für diese Instanz das Bereitstellen einer Bytereihenfolgemarkierung angefordert hat. Andernfalls ein Bytearray der Länge 0 (null).

Hinweise

Wenn diese Präambel einem codierten Stream vorangestellt ist, unterstützt sie den Decoder bei der Ermittlung des verwendeten Codierungsformats.

Der Encoder kann 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 (Codepunkt U+0041) wie folgt serialisiert (Hexadezimalwert):

  • Big-Endian-Bytereihenfolge: 00 00 00 41

  • Little-Endian-Bytereihenfolge: 41 00 00 00

Optional stellt UnicodeEncoding 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 (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):

  • Big-Endian-Bytereihenfolge: 00 00 FE FF

  • Little-Endian-Bytereihenfolge: FF FE 00 00

Im Allgemeinen ist es effizienter, Unicode-Zeichen in der systemeigenen Bytereihenfolge zu speichern. Beispielsweise ist es besser, die Little-Endian-Bytereihenfolge auf entsprechenden Plattformen, z. B. 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.

Beispiel

Das folgende Codebeispiel veranschaulicht, wie die GetPreamble-Methode zum Zurückgeben der Unicode-Bytereihenfolgemarkierung im Big-Endian- oder Little-Endian-Format für eine Instanz von UnicodeEncoding verwendet wird.

Imports System
Imports System.Text
Imports Microsoft.VisualBasic

Class UnicodeEncodingExample
    
    Public Shared Sub Main()
        Dim byteOrderMark() As Byte
        Dim b As Byte
        
        byteOrderMark = Encoding.Unicode.GetPreamble()
        Console.WriteLine("Default (little-endian) Unicode Preamble:")
        For Each b In  byteOrderMark
            Console.Write("[{0}]", b)
        Next b
        Console.WriteLine(ControlChars.NewLine)
        
        Dim bigEndianUnicode As New UnicodeEncoding(True, True)
        byteOrderMark = bigEndianUnicode.GetPreamble()
        Console.WriteLine("Big-endian Unicode Preamble:")
        For Each b In  byteOrderMark
            Console.Write("[{0}]", b)
        Next b
    End Sub 'Main
End Class 'UnicodeEncodingExample
using System;
using System.Text;

class UnicodeEncodingExample {
    public static void Main() {
        Byte[] byteOrderMark;
        
        byteOrderMark = Encoding.Unicode.GetPreamble();
        Console.WriteLine("Default (little-endian) Unicode Preamble:");
        foreach (Byte b in byteOrderMark) {
            Console.Write("[{0}]", b);
        }
        Console.WriteLine("\n");

        UnicodeEncoding bigEndianUnicode = new UnicodeEncoding(true, true);
        byteOrderMark = bigEndianUnicode.GetPreamble();
        Console.WriteLine("Big-endian Unicode Preamble:");
        foreach (Byte b in byteOrderMark) {
            Console.Write("[{0}]", b);
        }
    }
}
using namespace System;
using namespace System::Text;
using namespace System::Collections;
int main()
{
   array<Byte>^byteOrderMark;
   byteOrderMark = Encoding::Unicode->GetPreamble();
   Console::WriteLine( "Default (little-endian) Unicode Preamble:" );
   IEnumerator^ myEnum = byteOrderMark->GetEnumerator();
   while ( myEnum->MoveNext() )
   {
      Byte b = safe_cast<Byte>(myEnum->Current);
      Console::Write( "[{0}]", b );
   }

   Console::WriteLine( "\n" );
   UnicodeEncoding^ bigEndianUnicode = gcnew UnicodeEncoding( true,true );
   byteOrderMark = bigEndianUnicode->GetPreamble();
   Console::WriteLine( "Big-endian Unicode Preamble:" );
   myEnum = byteOrderMark->GetEnumerator();
   while ( myEnum->MoveNext() )
   {
      Byte b = safe_cast<Byte>(myEnum->Current);
      Console::Write( "[{0}]", b );
   }
}
import System.*;
import System.Text.*;

class UnicodeEncodingExample
{
    public static void main(String[] args)
    {
        ubyte byteOrderMark[];
        byteOrderMark = Encoding.get_Unicode().GetPreamble();
        Console.WriteLine("Default (little-endian) Unicode Preamble:");
        for(int iCtr = 0; iCtr < byteOrderMark.length; iCtr++) {
            ubyte b = byteOrderMark[iCtr];
            Console.Write("[{0}]", String.valueOf(b));
        }
        Console.WriteLine("\n");
        UnicodeEncoding bigEndianUnicode = new UnicodeEncoding(true, true);
        byteOrderMark = bigEndianUnicode.GetPreamble();
        Console.WriteLine("Big-endian Unicode Preamble:");
        for(int iCtr = 0; iCtr < byteOrderMark.length; iCtr++) {
            ubyte b = byteOrderMark[iCtr];
            Console.Write("[{0}]", String.valueOf(b));
        }
    } //main
} //UnicodeEncodingExample

Plattformen

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile für Pocket PC, Windows Mobile für Smartphone, 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

Siehe auch

Referenz

UnicodeEncoding-Klasse
UnicodeEncoding-Member
System.Text-Namespace