Proprietà Encoding.UTF8

 

Ottiene una codifica per il formato UTF-8.

Spazio dei nomi:   System.Text
Assembly:  mscorlib (in mscorlib.dll)

public static Encoding UTF8 { get; }

Valore proprietà

Type: System.Text.Encoding

Codifica per il formato UTF-8.

Questa proprietà restituisce un UTF8Encoding oggetto che consente di codificare i caratteri Unicode (UTF-16-codificate) in una sequenza di uno a quattro byte per carattere e decodifica una matrice di byte con codifica UTF-8 per i caratteri Unicode (con codifica UTF-16-).Per informazioni sulle codifiche di caratteri supportate da .NET Framework e una descrizione della codifica per l'utilizzo di Unicode, vedere Codifica di caratteri in .NET Framework.

L'oggetto UTF8Encoding restituito da questa proprietà potrebbe non avere il comportamento appropriato per l'applicazione.

  • Restituisce un UTF8Encoding oggetto che fornisce un BOM Unicode (BOM).Per creare un'istanza di una codifica UTF8 che non fornisce un indicatore ordine byte, chiamare un overload della UTF8Encoding costruttore.

  • Restituisce un UTF8Encoding oggetto che utilizza il fallback di sostituzione per sostituire ogni stringa non è possibile codificare e ogni byte non è possibile decodificare con un punto interrogativo ("?") caratteri.In alternativa, è possibile chiamare il UTF8Encoding.UTF8Encoding(Boolean, Boolean) costruttore per creare un'istanza di un UTF8Encoding oggetto cui fallback è un EncoderFallbackException o un DecoderFallbackException, come illustrato nell'esempio seguente.

    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
    

Nell'esempio seguente viene definita una matrice che include i seguenti caratteri:

  • LETTERA Z MINUSCOLA (U + 007A)

  • ALFABETO LATINO (U + 0061)

  • COMBINAZIONE BREVE (U + 0306)

  • ALFABETO LATINO AE CON ACUTA (U + 01FD)

  • LETTERA GRECA BETA (U + 03B2)

  • Una coppia di surrogati (U + D800 U + DD54) che costituisce il greco ACROPHONIC ATTIC uno MIGLIAIA STATERS (U + 10154).

Visualizza le unità di codice UTF-16 di ogni carattere e determina il numero di byte necessari per un codificatore UTF-8 per codificare la matrice di caratteri.Codifica i caratteri e quindi Visualizza i byte risultanti con codifica UTF-8.

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

Universal Windows Platform
Disponibile da 4.5
.NET Framework
Disponibile da 1.1
Portable Class Library
Supportato in: portable .NET platforms
Silverlight
Disponibile da 2.0
Windows Phone Silverlight
Disponibile da 7.0
Windows Phone
Disponibile da 8.1
Torna all'inizio
Mostra: