Encoding.GetPreamble Metod

Definition

När den åsidosätts i en härledd klass returnerar en sekvens med byte som anger den kodning som används.

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()

Returer

Byte[]

En bytematris som innehåller en sekvens med byte som anger vilken kodning som används.

-eller-

En bytematris med längd noll, om en ingress inte krävs.

Exempel

I följande exempel fastställs byteordningen för kodningen baserat på ingressen.

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.
'

Kommentarer

Encoding Om du vill kan objektet ange en ingress som är en matris med byte som kan prefixeras till sekvensen med byte som följer av kodningsprocessen. Om ingressen innehåller ett byteordningsmärke (i Unicode, kodpunkten U+FEFF) hjälper det avkodaren att fastställa byteordningen och transformeringsformatet eller UTF.

Unicode byte order mark (BOM) serialiseras på följande sätt (i hexadecimal):

  • UTF-8: EF BB BF

  • UTF-16 stor endian byte ordning: FE FF

  • UTF-16 lite endian byte ordning: FF FE

  • UTF-32 stor endian byte ordning: 00 00 FE FF

  • UTF-32 lite endian byte ordning: FF FE 00 00

Du bör använda strukturlistan eftersom den ger nästan viss identifiering av en kodning för filer som annars har förlorat referensen Encoding till objektet, till exempel otaggade eller felaktigt taggade webbdata eller slumpmässiga textfiler som lagras när ett företag inte har internationella problem eller andra data. Ofta kan användarproblem undvikas om data är konsekventa och korrekt taggade, helst i UTF-8 eller UTF-16.

För standarder som tillhandahåller en kodningstyp är en strukturliste något redundant. Den kan dock användas för att hjälpa en server att skicka rätt kodningshuvud. Alternativt kan den användas som reserv om kodningen annars går förlorad.

Det finns vissa nackdelar med att använda en strukturlista. Det kan till exempel vara svårt att veta hur databasfälten som använder en strukturlista ska begränsas. Sammanfogning av filer kan vara ett problem, till exempel när filer slås samman på ett sådant sätt att ett onödigt tecken kan hamna mitt i data. Trots de få nackdelarna rekommenderas dock användningen av en strukturlista starkt.

Mer information om byteordning och byteordningsmarkering finns i Unicode Standard på Unicode-startsidan.

Caution

För att säkerställa att de kodade byteen avkodas korrekt bör du prefixkodade byte med ingress. De flesta kodningar ger dock ingen ingress. För att säkerställa att de kodade byteen avkodas korrekt bör du använda en Unicode-kodning, dvs UTF8Encoding. , UnicodeEncodingeller UTF32Encoding, med en ingress.

Gäller för