Leer en inglés

Compartir a través de


UnicodeEncoding.GetDecoder Método

Definición

Obtiene un descodificador que convierte una secuencia de bytes codificada en UTF-16 en una secuencia de caracteres Unicode.

C#
public override System.Text.Decoder GetDecoder();

Devoluciones

Objeto Decoder que convierte una secuencia de bytes codificada en UTF-16 en una secuencia de caracteres Unicode.

Ejemplos

En el ejemplo siguiente se usa un codificador y un descodificador para codificar una cadena en una matriz de bytes y, a continuación, descodificar los bytes en una matriz de caracteres.

C#
using System;
using System.Text;

public class SamplesUnicodeEncoding  {

   public static void Main()  {

      // Get an encoder and a decoder from UnicodeEncoding.
      UnicodeEncoding u16 = new UnicodeEncoding( false, true, true );
      Encoder myEnc = u16.GetEncoder();
      Decoder myDec = u16.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 61 00 06 03 FD 01 B2 03
Using the decoder       : za??ß

*/

Comentarios

El Decoder.GetChars método convierte bloques secuenciales de bytes en bloques secuenciales de caracteres, de forma similar a .GetChars Sin embargo, un Decoder objeto mantiene información de estado entre las llamadas para que pueda descodificar correctamente las secuencias de bytes que abarcan bloques. DecoderTambién conserva los bytes finales al final de los bloques de datos y usa los bytes finales en la siguiente operación de descodificación. Por lo tanto, GetDecoder y GetEncoder son útiles para la transmisión de red y las operaciones de archivos, ya que estas operaciones suelen tratar con bloques de datos en lugar de con una secuencia de datos completa.

Si la detección de errores está habilitada, es decir, el throwOnInvalidBytes parámetro del constructor se establece trueen , la detección de errores también se habilita en el Decoder devuelto por este método. Si la detección de errores está habilitada y se encuentra una secuencia no válida, el estado del descodificador no está definido y el procesamiento debe detenerse.

Se aplica a

Producto Versiones
.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 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

Consulte también