Encoding.GetPreamble Methode
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Wanneer deze wordt overschreven in een afgeleide klasse, retourneert u een reeks bytes die de gebruikte codering aangeeft.
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()
Retouren
Een bytematrix met een reeks bytes die de gebruikte codering aangeeft.
– of –
Een bytematrix van lengte nul, als een preambule niet vereist is.
Voorbeelden
In het volgende voorbeeld wordt de bytevolgorde van de codering bepaald op basis van de preambule.
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.
'
Opmerkingen
Optioneel biedt het Encoding object een preparate van een matrix van bytes die kan worden voorafgegaan door de reeks bytes die het gevolg zijn van het coderingsproces. Als de preambule een bytevolgordemarkering bevat (in Unicode, codepunt U+FEFF), helpt de decoder de bytevolgorde en de transformatieindeling of UTF te bepalen.
De Unicode byte order mark (BOM) wordt als volgt geserialiseerd (in hexadecimaal):
UTF-8: EF BB BF
UTF-16 big endian byte order: FE FF
UTF-16 kleine endiane bytevolgorde: FF FE
UTF-32 big endian byte order: 00 00 FE FF
UTF-32 little endian byte order: FF FE 00 00
U moet de stuklijst gebruiken, omdat deze bijna bepaalde identificatie biedt van een codering voor bestanden die anders zijn verloren gegaan naar het Encoding object, bijvoorbeeld zonder vlag of onjuist gelabelde webgegevens of willekeurige tekstbestanden die zijn opgeslagen wanneer een bedrijf geen internationale problemen of andere gegevens had. Vaak worden gebruikersproblemen vermeden als gegevens consistent en correct zijn gelabeld, bij voorkeur in UTF-8 of UTF-16.
Voor standaarden die een coderingstype bieden, is een stuklijst enigszins redundant. Het kan echter worden gebruikt om een server te helpen de juiste coderingsheader te verzenden. Het kan ook worden gebruikt als een terugval in het geval dat de codering anders verloren gaat.
Er zijn enkele nadelen voor het gebruik van een BOM. Het kan bijvoorbeeld lastig zijn om te weten hoe u de databasevelden kunt beperken die gebruikmaken van een stuklijst. Samenvoeging van bestanden kan ook een probleem zijn, bijvoorbeeld wanneer bestanden zo worden samengevoegd dat een onnodig teken midden in de gegevens terecht kan komen. Ondanks de weinige nadelen wordt het gebruik van een BOM echter ten zeerste aanbevolen.
Voor meer informatie over bytevolgorde en het byte-ordemerk, zie de Unicode-standaard op de Unicode-startpagina.
Caution
Om ervoor te zorgen dat de gecodeerde bytes correct worden gedecodeerd, moet u voorgecodeerde bytes met een preparateer. De meeste coderingen bieden echter geen preambule. Om ervoor te zorgen dat de gecodeerde bytes correct worden gedecodeerd, moet u een Unicode-codering, dat wil gezegd, UTF8Encoding, UnicodeEncodingof UTF32Encoding, met een pretaat gebruiken.