UTF8Encoding.GetEncoder Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Obtiene un codificador que convierte una secuencia de caracteres Unicode en una secuencia codificada UTF-8 de bytes.
public:
override System::Text::Encoder ^ GetEncoder();
public override System.Text.Encoder GetEncoder();
override this.GetEncoder : unit -> System.Text.Encoder
Public Overrides Function GetEncoder () As Encoder
Devoluciones
que Encoder convierte una secuencia de caracteres Unicode en una secuencia codificada UTF-8 de bytes.
Ejemplos
En el ejemplo siguiente se usa el GetEncoder método para obtener un codificador para convertir una secuencia de caracteres en una secuencia codificada UTF-8 de bytes.
using System;
using System.Text;
class UTF8EncodingExample {
public static void Main() {
Char[] chars = new Char[] {'a', 'b', 'c', '\u0300', '\ua0a0'};
Byte[] bytes;
Encoder utf8Encoder = Encoding.UTF8.GetEncoder();
int byteCount = utf8Encoder.GetByteCount(chars, 2, 3, true);
bytes = new Byte[byteCount];
int bytesEncodedCount = utf8Encoder.GetBytes(chars, 2, 3, bytes, 0, true);
Console.WriteLine(
"{0} bytes used to encode characters.", bytesEncodedCount
);
Console.Write("Encoded bytes: ");
foreach (Byte b in bytes) {
Console.Write("[{0}]", b);
}
Console.WriteLine();
}
}
Imports System.Text
Imports Microsoft.VisualBasic.Strings
Class UTF8EncodingExample
Public Shared Sub Main()
'Characters:
' ChrW(97) = a
' ChrW(98) = b
' ChrW(99) = c
' ChrW(768) = `
' ChrW(41120) = valid unicode code point, but not a character
Dim chars() As Char = {ChrW(97), ChrW(98), ChrW(99), ChrW(768), ChrW(41120)}
Dim bytes() As Byte
Dim utf8Encoder As Encoder = Encoding.UTF8.GetEncoder()
Dim byteCount As Integer = utf8Encoder.GetByteCount(chars, 2, 3, True)
bytes = New Byte(byteCount - 1) {}
Dim bytesEncodedCount As Integer = utf8Encoder.GetBytes( _
chars, 2, 3, bytes, 0, True _
)
Console.WriteLine("{0} bytes used to encode characters.", bytesEncodedCount)
Console.Write("Encoded bytes: ")
Dim b As Byte
For Each b In bytes
Console.Write("[{0}]", b)
Next b
Console.WriteLine()
End Sub
End Class
Comentarios
El Encoder.GetBytes método convierte bloques secuenciales de caracteres en bloques secuenciales de bytes, de forma similar al GetBytes método . Sin embargo, un Encoder mantiene información de estado entre llamadas para que pueda codificar correctamente secuencias de caracteres que abarcan bloques. Encoder También conserva los caracteres finales al final de los bloques de datos y usa los caracteres finales en la siguiente operación de codificación. Por ejemplo, un bloque de datos podría terminar con un suplente alto no coincidente y el suplente bajo coincidente podría estar en el siguiente bloque de datos. Por lo tanto, GetDecoder y GetEncoder son útiles para las operaciones de transmisión de red y archivos, ya que esas operaciones suelen tratar con bloques de datos en lugar de un flujo de datos completo.
Si la detección de errores está habilitada, es decir, el throwOnInvalidCharacters parámetro del constructor se establece trueen , la detección de errores también está habilitada en el Encoder devuelto por este método. Si la detección de errores está habilitada y se encuentra una secuencia no válida, el estado del codificador no está definido y el procesamiento debe detenerse.