Questo articolo è stato tradotto automaticamente. Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

Metodo UnicodeEncoding.GetEncoder ()

 

Data di pubblicazione: novembre 2016

Ottiene un codificatore in grado di convertire una sequenza di caratteri Unicode in una sequenza di byte codificati UTF-16.

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

[ComVisibleAttribute(false)]
public override Encoder GetEncoder()

Valore restituito

Type: System.Text.Encoder

Oggetto Encoder che converte una sequenza di caratteri Unicode in una sequenza di byte codificati UTF-16.

Il Encoder.GetBytes metodo converte blocchi sequenziali di caratteri in blocchi sequenziali di byte in un modo simile al GetBytes metodo di questa classe. Tuttavia, un Encoder gestisce le informazioni di stato tra le chiamate in modo che può codificare correttamente le sequenze di caratteri che includono i blocchi. Il Encoder oggetto inoltre mantiene i caratteri finali alla fine dei blocchi di dati e utilizza i caratteri finali nella successiva operazione di codifica. Ad esempio, un blocco di dati potrebbe terminare con un surrogato alto senza corrispondenza e potrebbe essere il surrogato basso corrispondente nel blocco di dati successivo. Di conseguenza, GetDecoder e GetEncoder sono utili per la trasmissione di rete e le operazioni di file, perché queste operazioni utilizzano spesso blocchi di dati anziché un flusso di dati completo.

Se è attivato, ovvero il throwOnInvalidBytes parametro del costruttore è impostato su true, è attivato anche nel Encoder oggetto restituito da questo metodo. Se è abilitato il rilevamento errori e viene rilevata una sequenza non valida, lo stato del codificatore di messaggi è definito e l'elaborazione deve essere interrotta.

Nell'esempio seguente utilizza un codificatore e decodificatore per codificare una stringa in una matrice di byte e quindi decodificare i byte in una matrice di caratteri.

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??�

*/

Universal Windows Platform
Disponibile da 8
.NET Framework
Disponibile da 2.0
Libreria di classi portabile
Supportato in: piattaforme .NET portabili
Silverlight
Disponibile da 2.0
Windows Phone Silverlight
Disponibile da 7.0
Windows Phone
Disponibile da 8.1
Torna all'inizio
Mostra: