Encoding.UTF8 Właściwość

Definicja

Pobiera kodowanie dla formatu UTF-8.

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

Wartość właściwości

Encoding

Kodowanie dla formatu UTF-8.

Przykłady

W poniższym przykładzie zdefiniowano tablicę, która składa się z następujących znaków:

  • LATIN SMALL LETTER Z (U+007A)

  • LATIN SMALL LETTER A (U+0061)

  • ŁĄCZENIE BREVE (U + 0306)

  • ŁACIŃSKA MAŁA LITERA AE Z ODCIĘCIEM (U+01FD)

  • GRECKI MAŁA LITERA BETA (U+03B2)

  • Para zastępcza (U+D800 U+DD54), która tworzy GRECKI ATTIC ATTIC ONE THOUSAND STATERS (U+10154).

Wyświetla jednostki kodu UTF-16 każdego znaku i określa liczbę bajtów wymaganych przez koder UTF-8 do kodowania tablicy znaków. Następnie koduje znaki i wyświetla wynikowe bajty zakodowane w formacie UTF-8.

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

Uwagi

Ta właściwość zwraca obiekt, który koduje znaki Unicode (kodowane w formacie UTF-16) w sekwencję od jednego do czterech bajtów na znak i dekoduje tablicę bajtów zakodowaną w formacie UTF-8 na znaki Unicode (zakodowane w formacie UTF8Encoding UTF-16). Aby uzyskać informacje o kodowaniach znaków obsługiwanych przez platformę .NET i o tym, którego kodowania Unicode użyć, zobacz Kodowanie znaków na platformie .NET.

Obiekt zwracany przez tę właściwość może UTF8Encoding nie mieć odpowiedniego zachowania dla aplikacji.

  • Zwraca UTF8Encoding obiekt, który zawiera znacznik kolejności bajtów Unicode (BOM). Aby utworzyć wystąpienia kodowania UTF8, które nie dostarcza bom, należy wywołać przeciążenie UTF8Encoding konstruktora.

  • Zwraca obiekt, który używa zastępczego znaku rezerwowego w celu zastąpienia każdego ciągu, który nie może zakodować, i każdego bajtu, który nie może odkodować za pomocą znaku zapytania UTF8Encoding ("?"). Zamiast tego można wywołać konstruktora w celu utworzenia wystąpienia obiektu, którego rezerwowy element to lub , jak pokazano w UTF8Encoding.UTF8Encoding(Boolean, Boolean) UTF8Encoding poniższym EncoderFallbackException DecoderFallbackException przykładzie.

    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
    

Dotyczy

Produkt Wersje
.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

Zobacz też