Lire en anglais

Partager via


Encoding.BigEndianUnicode Propriété

Définition

Obtient un encodage pour le format UTF-16 qui utilise l'ordre d'octet avec primauté des octets de poids fort (big-endian).

public static System.Text.Encoding BigEndianUnicode { get; }

Valeur de propriété

Objet d'encodage pour le format UTF-16 avec primauté des octets de poids fort (big-endian).

Exemples

L’exemple suivant lit un fichier texte avec un encodage UTF-16 utilisant l’ordre de primauté des octets de poids fort (Big-endian).

using System;
using System.IO;

namespace BigEndianExample
{
   public class Class1 
   {
      public static void Main(string[] args) 
      {
         // Read a text file saved with Big Endian Unicode encoding.
         System.Text.Encoding encoding = System.Text.Encoding.BigEndianUnicode;
         StreamReader reader = new StreamReader("TextFile.txt", encoding);
         string line = reader.ReadLine();
         while (line != null) 
         {
            Console.WriteLine(line);
            line = reader.ReadLine();
         }
       }
    }
}

L’exemple suivant détermine le nombre d’octets requis pour encoder un tableau de caractères, encode les caractères et affiche les octets obtenus.

using System;
using System.Text;

public class SamplesEncoding  {

   public static void Main()  {

      // The characters to encode:
      //    Latin Small Letter Z (U+007A)
      //    Latin Small Letter A (U+0061)
      //    Combining Breve (U+0306)
      //    Latin Small Letter AE With Acute (U+01FD)
      //    Greek Small Letter Beta (U+03B2)
      //    a high-surrogate value (U+D8FF)
      //    a low-surrogate value (U+DCFF)
      char[] myChars = new char[] { 'z', 'a', '\u0306', '\u01FD', '\u03B2', '\uD8FF', '\uDCFF' };

      // Get different encodings.
      Encoding  u7    = Encoding.UTF7;
      Encoding  u8    = Encoding.UTF8;
      Encoding  u16LE = Encoding.Unicode;
      Encoding  u16BE = Encoding.BigEndianUnicode;
      Encoding  u32   = Encoding.UTF32;

      // Encode the entire array, and print out the counts and the resulting bytes.
      PrintCountsAndBytes( myChars, u7 );
      PrintCountsAndBytes( myChars, u8 );
      PrintCountsAndBytes( myChars, u16LE );
      PrintCountsAndBytes( myChars, u16BE );
      PrintCountsAndBytes( myChars, u32 );
   }

   public static void PrintCountsAndBytes( char[] chars, Encoding enc )  {

      // Display the name of the encoding used.
      Console.Write( "{0,-30} :", enc.ToString() );

      // Display the exact byte count.
      int iBC  = enc.GetByteCount( chars );
      Console.Write( " {0,-3}", iBC );

      // Display the maximum byte count.
      int iMBC = enc.GetMaxByteCount( chars.Length );
      Console.Write( " {0,-3} :", iMBC );

      // Encode the array of chars.
      byte[] bytes = enc.GetBytes( chars );

      // Display all the encoded bytes.
      PrintHexBytes( bytes );
   }

   public static void PrintHexBytes( byte[] bytes )  {

      if (( bytes == null ) || ( bytes.Length == 0 ))
        {
            Console.WriteLine( "<none>" );
        }
        else  {
         for ( int i = 0; i < bytes.Length; i++ )
            Console.Write( "{0:X2} ", bytes[i] );
         Console.WriteLine();
      }
   }
}


/* 
This code produces the following output.

System.Text.UTF7Encoding       : 18  23  :7A 61 2B 41 77 59 42 2F 51 4F 79 32 50 2F 63 2F 77 2D
System.Text.UTF8Encoding       : 12  24  :7A 61 CC 86 C7 BD CE B2 F1 8F B3 BF
System.Text.UnicodeEncoding    : 14  16  :7A 00 61 00 06 03 FD 01 B2 03 FF D8 FF DC
System.Text.UnicodeEncoding    : 14  16  :00 7A 00 61 03 06 01 FD 03 B2 D8 FF DC FF
System.Text.UTF32Encoding      : 24  32  :7A 00 00 00 61 00 00 00 06 03 00 00 FD 01 00 00 B2 03 00 00 FF FC 04 00

*/

Remarques

L' UnicodeEncoding objet retourné par cette propriété n’a peut-être pas le comportement approprié pour votre application. Elle utilise l’option de secours de remplacement pour remplacer chaque chaîne qu’elle ne peut pas encoder et chaque octet qu’elle ne peut pas décoder par un point d’interrogation («  ? »). Au lieu de cela, vous pouvez appeler le UnicodeEncoding.UnicodeEncoding(Boolean, Boolean, Boolean) constructeur pour instancier un objet Big endian UnicodeEncoding dont EncoderFallbackException la valeur de secours est ou DecoderFallbackException , comme l’illustre l’exemple suivant.

using System;
using System.Text;

public class Example
{
   public static void Main()
   {
      byte[] bytes = { 0x00, 0x20, 0xd8, 0x01, 0x00, 0x68, 0xA7, 0x00 };
      Encoding enc = new UnicodeEncoding(true, true, true);
      
      try {
         string value = enc.GetString(bytes);
         Console.WriteLine();
         Console.WriteLine("'{0}'", value);
      }
      catch (DecoderFallbackException e) {      
         Console.WriteLine("Unable to decode {0} at index {1}", 
                           ShowBytes(e.BytesUnknown), e.Index);
      }
   }

   private static string ShowBytes(byte[] bytes) 
   {
      string returnString = null;
      foreach (var byteValue in bytes)
         returnString += String.Format("0x{0:X2} ", byteValue);

      return returnString.Trim();
   }
}
// The example displays the following output:
//        Unable to decode 0xD8 0x01 at index 4

L' UnicodeEncoding objet retourné possède les propriétés, BodyNameHeaderName et WebName , qui produisent le nom « unicodeFFFE ». Bien que la marque d’ordre d’octet UTF-16 Big endian soit hexadécimale FEFF, le nom « unicodeFFFE » a été choisi, car la marque d’ordre d’octet s’affiche sous forme de FFFE hexadécimal sur les ordinateurs Windows Little endian.

S’applique à

Produit Versions
.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
.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

Voir aussi