Encoding.GetPreamble Metod
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
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
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.