Encoding.GetPreamble Metode

Definisi

Saat ditimpa dalam kelas turunan, mengembalikan urutan byte yang menentukan pengodean yang digunakan.

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

Mengembalikan

Byte[]

Array byte yang berisi urutan byte yang menentukan pengodean yang digunakan.

-atau-

Array byte dengan panjang nol, jika tidak diperlukan.

Contoh

Contoh berikut menentukan urutan byte pengodean berdasarkan pembukaan.

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

Keterangan

Secara opsional, Encoding objek menyediakan awalan yang merupakan array byte yang dapat diawali dengan urutan byte yang dihasilkan dari proses pengodean. Jika preamble berisi tanda urutan byte (di Unicode, titik kode U+FEFF), itu membantu dekoder menentukan urutan byte dan format transformasi atau UTF.

Tanda urutan byte Unicode (BOM) diserialisasikan sebagai berikut (dalam heksadesimal):

  • UTF-8: EF BB BF

  • Urutan byte big endian UTF-16: FE FF

  • Urutan byte little endian UTF-16: FF FE

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

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

Anda harus menggunakan BOM, karena menyediakan identifikasi pengodean yang hampir pasti untuk file yang kehilangan referensi ke objek, misalnya, data web yang tidak diberi tag atau tidak benar atau file teks acak yang disimpan ketika bisnis tidak memiliki kekhawatiran Encoding internasional atau data lainnya. Seringkali masalah pengguna mungkin dihindari jika data ditandai dengan konsisten dan benar, sebaiknya di UTF-8 atau UTF-16.

Untuk standar yang menyediakan jenis pengodean, BOM agak berlebihan. Namun, ini dapat digunakan untuk membantu server mengirim header pengodean yang benar. Atau, ini dapat digunakan sebagai fallback jika pengodean hilang.

Ada beberapa kelemahan menggunakan BOM. Misalnya, mengetahui cara membatasi bidang database yang menggunakan BOM bisa sulit. Penggabungan file juga dapat menjadi masalah, misalnya, ketika file digabungkan sewaktu-waktu sehingga karakter yang tidak perlu dapat berakhir di tengah data. Terlepas dari beberapa kelemahan, namun, penggunaan BOM sangat disarankan.

Untuk informasi selengkapnya tentang urutan byte dan tanda urutan byte, lihat Standar Unicode di halaman beranda unicode .

Caution

Untuk memastikan bahwa byte yang dikodekan didekode dengan benar, Anda harus awali byte yang dikodekan dengan awalan. Namun, sebagian besar pengodean tidak menyediakan preamble. Untuk memastikan bahwa byte yang dikodekan didekodekan dengan benar, Anda harus menggunakan pengodean Unicode, yaitu, , UTF8EncodingUnicodeEncoding, atau UTF32Encoding, dengan dapat dikodekan sebelumnya.

Berlaku untuk