Encoding.GetPreamble Yöntem

Tanım

Türetilmiş bir sınıfta geçersiz kılındığında, kullanılan kodlamayı belirten bir bayt dizisi döndürür.

C#
public virtual byte[] GetPreamble();

Döndürülenler

Byte[]

Kullanılan kodlamayı belirten bir bayt dizisi içeren bayt dizisi.

-veya-

Ön derleme gerekli değilse, sıfır uzunluklu bir bayt dizisi.

Örnekler

Aşağıdaki örnek, ön derlemeye göre kodlamanın bayt sırasını belirler.

C#
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.

*/

Açıklamalar

İsteğe bağlı olarak, nesnesi kodlama Encoding işleminden kaynaklanan bayt dizisine ön ek olarak eklenebilen bir bayt dizisi olan bir ön derleme sağlar. Ön parçada bayt sırası işareti (Unicode, kod noktası U+FEFF) varsa, kod çözücüye bayt sırasını ve dönüştürme biçimini veya UTF'yi belirlemesine yardımcı olur.

Unicode bayt sırası işareti (BOM) aşağıdaki gibi serileştirilir (onaltılık olarak):

  • UTF-8: EF BB BF

  • UTF-16 büyük endian bayt sırası: FE FF

  • UTF-16 küçük endian bayt sırası: FF FE

  • UTF-32 büyük endian bayt siparişi: 00 00 FE FF

  • UTF-32 küçük endian bayt siparişi: FF FE 00 00

Ürün reçetesini kullanmanız gerekir çünkü nesneye başvuru Encoding kaybı olan dosyalar için kodlamanın neredeyse belirli bir tanımlamasını sağlar; örneğin etiketlenmemiş veya yanlış etiketlenmiş web verileri ya da bir işletmenin uluslararası endişeleri veya başka verileri olmadığında depolanan rastgele metin dosyaları. Genellikle veriler tutarlı ve düzgün etiketlenmişse (tercihen UTF-8 veya UTF-16'da) kullanıcı sorunları önlenebilir.

Kodlama türü sağlayan standartlar için ürün reçetesi biraz yedeklidir. Ancak, bir sunucunun doğru kodlama üst bilgisini göndermesine yardımcı olmak için kullanılabilir. Alternatif olarak, kodlamanın aksi takdirde kaybolması durumunda geri dönüş olarak kullanılabilir.

Ürün reçetesi kullanmanın bazı dezavantajları vardır. Örneğin, ürün reçetesi kullanan veritabanı alanlarının nasıl sınırlandığını bilmek zor olabilir. Dosyaların birleştirilmesi de sorun olabilir, örneğin, dosyalar gereksiz bir karakter verilerin ortasında olacak şekilde birleştirildiğinde. Ancak, birkaç dezavantaja rağmen, ürün reçetesinin kullanılması kesinlikle önerilir.

Bayt sırası ve bayt sırası işareti hakkında daha fazla bilgi için, Unicode giriş sayfasındaki Unicode Standardı'na bakın.

Dikkat

Kodlanmış baytların kodunun düzgün bir şekilde çözülmesini sağlamak için kodlanmış baytlara ön ek olarak bir ön ek oluşturmanız gerekir. Ancak, çoğu kodlama bir ön derleme sağlamaz. Kodlanmış baytların kodunun düzgün bir şekilde çözülmesini sağlamak için, önceden oluşturulmuş bir Unicode kodlaması UTF8Encoding( , UnicodeEncodingveya UTF32Encoding) kullanmanız gerekir.

Şunlara uygulanır

Ürün Sürümler
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0