UnicodeEncoding.GetEncoder Método
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Obtém um codificador que converte uma sequência de caracteres Unicode numa sequência de bytes codificada em UTF-16.
public:
override System::Text::Encoder ^ GetEncoder();
public override System.Text.Encoder GetEncoder();
[System.Runtime.InteropServices.ComVisible(false)]
public override System.Text.Encoder GetEncoder();
override this.GetEncoder : unit -> System.Text.Encoder
[<System.Runtime.InteropServices.ComVisible(false)>]
override this.GetEncoder : unit -> System.Text.Encoder
Public Overrides Function GetEncoder () As Encoder
Devoluções
Um Encoder objeto que converte uma sequência de caracteres Unicode numa sequência de bytes codificada em UTF-16.
- Atributos
Exemplos
O exemplo seguinte usa um codificador e um descodificador para codificar uma cadeia num array de bytes, e depois descodificar os bytes num array de caracteres.
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??ß
*/
Imports System.Text
Public Class SamplesUnicodeEncoding
Public Shared Sub Main()
' Get an encoder and a decoder from UnicodeEncoding.
Dim u16 As New UnicodeEncoding(False, True, True)
Dim myEnc As Encoder = u16.GetEncoder()
Dim myDec As Decoder = 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)
Dim myChars() As Char = {"z"c, "a"c, ChrW(&H0306), ChrW(&H01FD), ChrW(&H03B2)}
Console.Write("The original characters : ")
Console.WriteLine(myChars)
' Encode the character array.
Dim iBC As Integer = myEnc.GetByteCount(myChars, 0, myChars.Length, True)
' NOTE: In Visual Basic, arrays contain one extra element by default.
' The following line creates an array with the exact number of elements required.
Dim myBytes(iBC - 1) As Byte
myEnc.GetBytes(myChars, 0, myChars.Length, myBytes, 0, True)
' Print the resulting bytes.
Console.Write("Using the encoder : ")
Dim i As Integer
For i = 0 To myBytes.Length - 1
Console.Write("{0:X2} ", myBytes(i))
Next i
Console.WriteLine()
' Decode the byte array back into an array of characters.
Dim iCC As Integer = myDec.GetCharCount(myBytes, 0, myBytes.Length, True)
' NOTE: In Visual Basic, arrays contain one extra element by default.
' The following line creates an array with the exact number of elements required.
Dim myDecodedChars(iCC - 1) As Char
myDec.GetChars(myBytes, 0, myBytes.Length, myDecodedChars, 0, True)
' Print the resulting characters.
Console.Write("Using the decoder : ")
Console.WriteLine(myDecodedChars)
End Sub
End Class
'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??ß
Observações
O Encoder.GetBytes método converte blocos sequenciais de caracteres em blocos sequenciais de bytes de forma semelhante ao GetBytes método desta classe. No entanto, um Encoder objeto mantém informação de estado entre chamadas para que possa codificar corretamente sequências de caracteres que abrangem blocos. O Encoder objeto também preserva os caracteres finais no final dos blocos de dados e utiliza os caracteres finais na próxima operação de codificação. Por exemplo, um bloco de dados pode terminar com um substituto alto não emparelhado, e o substituto baixo correspondente pode estar no bloco de dados seguinte. Portanto, GetDecoder e GetEncoder são úteis para transmissão em rede e operações de ficheiros, porque essas operações frequentemente lidam com blocos de dados em vez de um fluxo de dados completo.
Se a deteção de erros estiver ativada, ou seja, o throwOnInvalidBytes parâmetro do construtor for definido para true, a deteção de erro também é ativada no Encoder objeto devolvido por este método. Se a deteção de erros estiver ativada e for encontrada uma sequência inválida, o estado do codificador é indefinido e o processamento deve parar.