Encoding.GetPreamble Metoda

Definice

Při přepsání v odvozené třídě vrátí posloupnost bajtů, která určuje použité kódování.

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

Návraty

Byte[]

Bajtové pole obsahující posloupnost bajtů, která určuje použité kódování.

nebo

Bajtová matice nulové délky, pokud preambule není vyžadována.

Příklady

Následující příklad určuje pořadí bajtů kódování na základě 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.
'

Poznámky

Volitelně objekt Encoding poskytuje preambuli, která je polem bajtů, která může být předponou posloupnosti bajtů vyplývajících z procesu kódování. Pokud preambule obsahuje znak pořadí bajtů (v kódování Unicode, bod kódu U+FEFF), pomůže dekodér určit pořadí bajtů a formát transformace nebo UTF.

Znak pořadí bajtů Unicode (BOM) je serializován následujícím způsobem (v šestnáctkové soustavě):

  • UTF-8: EF BB BF

  • Pořadí velkých bajtů UTF-16: FE FF

  • UTF-16 little endian byte order: FF FE

  • UTF-32 big endian byte order: 00 00 FE FF

  • UTF-32 little endian byte order: FF FE 00 00

Kusovník byste měli použít, protože poskytuje téměř určitou identifikaci kódování souborů, které jinak ztratily odkaz na Encoding objekt, například neoznačené nebo nesprávně označené webové data nebo náhodné textové soubory uložené v případě, že firma neměla mezinárodní obavy nebo jiná data. Problémy uživatelů se často můžou vyhnout, pokud jsou data konzistentně a správně označená, nejlépe v UTF-8 nebo UTF-16.

Pro standardy, které poskytují typ kódování, je kusovník poněkud redundantní. Dá se ale použít k tomu, aby server posílal správnou hlavičku kódování. Alternativně se dá použít jako záložní v případě, že se kódování jinak ztratí.

Používání kusovníku má určité nevýhody. Například znalost omezení databázových polí, která používají kusovník, může být obtížné. Zřetězení souborů může být také problém, například když se soubory sloučí tak, aby nepotřebný znak mohl skončit uprostřed dat. I přes několik nevýhod se však důrazně doporučuje použití kusovníku.

Další informace o pořadí bajtů a značce pořadí bajtů naleznete v tématu Standard Unicode na domovské stránce Unicode.

Caution

Chcete-li zajistit, aby kódované bajty byly dekódovány správně, měli byste předkódovat bajty s preambuli. Většina kódování však neposkytuje preambuli. Chcete-li zajistit, aby kódované bajty byly dekódovány správně, měli byste použít kódování Unicode, to znamená UTF8Encoding, , nebo UnicodeEncodingUTF32Encoding, s preambuli.

Platí pro