Прочитать на английском

Поделиться через


UTF32Encoding.GetDecoder Метод

Определение

Получает средство декодирования, преобразующее последовательность байтов в кодировке UTF-32 в последовательность символов Юникода.

public override System.Text.Decoder GetDecoder();

Возвращаемое значение

Объект Decoder, преобразующий последовательность байтов в кодировке UTF-32 в последовательность символов Юникода.

Примеры

В следующем примере кодировщик и декодер используются для кодирования строки в массив байтов, а затем декодирование байтов в массив символов.

using System;
using System.Text;

public class SamplesUTF32Encoding  {

   public static void Main()  {

      // Get an encoder and a decoder from UTF32Encoding.
      UTF32Encoding u32 = new UTF32Encoding( false, true, true );
      Encoder myEnc = u32.GetEncoder();
      Decoder myDec = u32.GetDecoder();

      // 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)
      char[] myChars = new char[5] { 'z', 'a', '\u0306', '\u01FD', '\u03B2' };
      Console.Write( "The original characters : " );
      Console.WriteLine( myChars );

      // Encode the character array.
      int iBC  = myEnc.GetByteCount( myChars, 0, myChars.Length, true );
      byte[] myBytes = new byte[iBC];
      myEnc.GetBytes( myChars, 0, myChars.Length, myBytes, 0, true );

      // Print the resulting bytes.
      Console.Write( "Using the encoder       : " );
      for ( int i = 0; i < myBytes.Length; i++ )
         Console.Write( "{0:X2} ", myBytes[i] );
      Console.WriteLine();

      // Decode the byte array back into an array of characters.
      int iCC  = myDec.GetCharCount( myBytes, 0, myBytes.Length, true );
      char[] myDecodedChars = new char[iCC];
      myDec.GetChars( myBytes, 0, myBytes.Length, myDecodedChars, 0, true );

      // Print the resulting characters.
      Console.Write( "Using the decoder       : " );
      Console.WriteLine( myDecodedChars );
   }
}


/* 
This code produces the following output.  The question marks take the place of characters that cannot be displayed at the console.

The original characters : za??ß
Using the encoder       : 7A 00 00 00 61 00 00 00 06 03 00 00 FD 01 00 00 B2 03 00 00
Using the decoder       : za??ß

*/

Комментарии

Метод Decoder.GetChars преобразует последовательные блоки байтов в последовательные блоки символов, аналогично методу GetChars . Однако сохраняет сведения о состоянии между вызовами, Decoder чтобы правильно декодировать последовательности байтов, охватывающие блоки. DecoderТакже сохраняет конечные байты в конце блоков данных и использует конечные байты в следующей операции декодирования. Поэтому GetDecoder они и GetEncoder полезны для передачи по сети и операций с файлами, так как эти операции часто работают с блоками данных, а не с полным потоком данных.

Если включено обнаружение ошибок, throwOnInvalidCharacters то есть параметр конструктора имеет значение true, обнаружение ошибок также включено в объекте , Decoder возвращаемом этим методом. Если обнаружение ошибок включено и обнаружена недопустимая последовательность, состояние декодера не определено и обработка должна быть остановлена.

Применяется к

Продукт Версии
.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 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.3, 1.4, 1.6, 2.0, 2.1
UWP 10.0

См. также раздел