Encoding.GetPreamble Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
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
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.