Encoding.UTF8 Özellik

Tanım

UTF-8 biçimi için bir kodlama alır.

C#
public static System.Text.Encoding UTF8 { get; }

Özellik Değeri

Encoding

UTF-8 biçimi için bir kodlama.

Örnekler

Aşağıdaki örnek, aşağıdaki karakterlerden oluşan bir dizi tanımlar:

  • LATIN KÜÇÜK HARFI Z (U+007A)

  • LATIN KÜÇÜK HARF A (U+0061)

  • BREVE'I BIRLEŞTIRME (U+0306)

  • LATIN KÜÇÜK HARFLI AE VE LATIN (U+01FD)

  • YUNANCA KÜÇÜK HARF BETA (U+03B2)

  • YUNANCA ACROOFIC ATTIC ONE THOUSAND STATERS (U+10154) oluşturan bir yedek çift (U+D800 U+DD54).

Her karakterin UTF-16 kod birimlerini görüntüler ve bir UTF-8 kodlayıcısı tarafından karakter dizisini kodlamak için gereken bayt sayısını belirler. Ardından karakterleri kodlar ve sonuçta elde edilen UTF-8 ile kodlanmış baytları görüntüler.

C#
using System;
using System.Text;

public class Example
{
   public static void Main()  
   {
      // Create a character array.
      string gkNumber = Char.ConvertFromUtf32(0x10154);
      char[] chars = new char[] { 'z', 'a', '\u0306', '\u01FD', '\u03B2', 
                                  gkNumber[0], gkNumber[1] };

      // Get UTF-8 and UTF-16 encoders.
      Encoding utf8 = Encoding.UTF8;
      Encoding utf16 = Encoding.Unicode;
      
      // Display the original characters' code units.
      Console.WriteLine("Original UTF-16 code units:");
      byte[] utf16Bytes = utf16.GetBytes(chars);
      foreach (var utf16Byte in utf16Bytes)
         Console.Write("{0:X2} ", utf16Byte);
      Console.WriteLine();
         
      // Display the number of bytes required to encode the array.
      int reqBytes  = utf8.GetByteCount(chars);
      Console.WriteLine("\nExact number of bytes required: {0}", 
                    reqBytes);

      // Display the maximum byte count.
      int maxBytes = utf8.GetMaxByteCount(chars.Length);
      Console.WriteLine("Maximum number of bytes required: {0}\n", 
                        maxBytes);

      // Encode the array of chars.
      byte[] utf8Bytes = utf8.GetBytes(chars);

      // Display all the UTF-8-encoded bytes.
      Console.WriteLine("UTF-8-encoded code units:");
      foreach (var utf8Byte in utf8Bytes)
         Console.Write("{0:X2} ", utf8Byte);
      Console.WriteLine();
   }
}
// The example displays the following output:
//       Original UTF-16 code units:
//       7A 00 61 00 06 03 FD 01 B2 03 00 D8 54 DD
//       
//       Exact number of bytes required: 12
//       Maximum number of bytes required: 24
//       
//       UTF-8-encoded code units:
//       7A 61 CC 86 C7 BD CE B2 F0 90 85 94

Açıklamalar

Bu özellik, Unicode (UTF-16 kodlamalı) karakterleri karakter başına bir veya dört baytlık bir diziye kodlayan ve UTF-8 ile kodlanmış bayt dizisinin kodunu UTF8Encoding Unicode (UTF-16 kodlamalı) karakterlere çözen bir nesne döndürür. .NET tarafından desteklenen karakter kodlamaları ve kullanılacak Unicode kodlaması hakkında bilgi için bkz. .NET'te Karakter Kodlaması.

Bu UTF8Encoding özellik tarafından döndürülen nesne, uygulamanıza uygun davranışa sahip olabilir.

  • Unicode UTF8Encoding byte sipariş işareti (BOM) sağlayan bir nesne döndürür. BOM sağlan bir UTF8 kodlaması örneği için oluşturucu herhangi bir aşırı UTF8Encoding yüklemesini çağırır.

  • Kodlayamadı her dizeyi ve bir soru işareti ("?") karakteriyle kodunu çözemeyilen her bir bayta değiştirmek için değiştirme geri dönüş kullanan UTF8Encoding bir nesne döndürür. Bunun yerine, aşağıdaki örnekte gösterildiği gibi, geri dönüş bir veya olan bir nesneyi örneği için UTF8Encoding.UTF8Encoding(Boolean, Boolean) UTF8Encoding oluşturucu EncoderFallbackException DecoderFallbackException çağırabilirsiniz.

    C#
    using System;
    using System.Text;
    
    public class Example
    {
       public static void Main()
       {
          Encoding enc = new UTF8Encoding(true, true);
          string value = "\u00C4 \uD802\u0033 \u00AE"; 
    
          try {
             byte[] bytes= enc.GetBytes(value);
             foreach (var byt in bytes)
                Console.Write("{0:X2} ", byt);
             Console.WriteLine();
    
             string value2 = enc.GetString(bytes);
             Console.WriteLine(value2);
          }
          catch (EncoderFallbackException e) {
             Console.WriteLine("Unable to encode {0} at index {1}", 
                               e.IsUnknownSurrogate() ? 
                                  String.Format("U+{0:X4} U+{1:X4}", 
                                                Convert.ToUInt16(e.CharUnknownHigh),
                                                Convert.ToUInt16(e.CharUnknownLow)) :
                                  String.Format("U+{0:X4}", 
                                                Convert.ToUInt16(e.CharUnknown)),
                               e.Index);
          }                     
       }
    }
    // The example displays the following output:
    //        Unable to encode U+D802 at index 2
    

Ş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
.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
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

Ayrıca bkz.