UnicodeEncoding Classe
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.
Representa uma codificação UTF-16 de caracteres Unicode.
public ref class UnicodeEncoding : System::Text::Encoding
public class UnicodeEncoding : System.Text.Encoding
[System.Serializable]
public class UnicodeEncoding : System.Text.Encoding
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public class UnicodeEncoding : System.Text.Encoding
type UnicodeEncoding = class
inherit Encoding
[<System.Serializable>]
type UnicodeEncoding = class
inherit Encoding
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type UnicodeEncoding = class
inherit Encoding
Public Class UnicodeEncoding
Inherits Encoding
- Herança
- Atributos
Exemplos
O exemplo seguinte demonstra como codificar uma cadeia de caracteres Unicode num array de bytes usando um UnicodeEncoding objeto. O array de bytes é descodificado numa string para demonstrar que não há perda de dados.
using System;
using System.Text;
class UnicodeEncodingExample {
public static void Main() {
// The encoding.
UnicodeEncoding unicode = new UnicodeEncoding();
// Create a string that contains Unicode characters.
String unicodeString =
"This Unicode string contains two characters " +
"with codes outside the traditional ASCII code range, " +
"Pi (\u03a0) and Sigma (\u03a3).";
Console.WriteLine("Original string:");
Console.WriteLine(unicodeString);
// Encode the string.
Byte[] encodedBytes = unicode.GetBytes(unicodeString);
Console.WriteLine();
Console.WriteLine("Encoded bytes:");
foreach (Byte b in encodedBytes) {
Console.Write("[{0}]", b);
}
Console.WriteLine();
// Decode bytes back to string.
// Notice Pi and Sigma characters are still present.
String decodedString = unicode.GetString(encodedBytes);
Console.WriteLine();
Console.WriteLine("Decoded bytes:");
Console.WriteLine(decodedString);
}
}
Imports System.Text
Imports Microsoft.VisualBasic.Strings
Class UnicodeEncodingExample
Public Shared Sub Main()
' The encoding.
Dim uni As New UnicodeEncoding()
' Create a string that contains Unicode characters.
Dim unicodeString As String = _
"This Unicode string contains two characters " & _
"with codes outside the traditional ASCII code range, " & _
"Pi (" & ChrW(928) & ") and Sigma (" & ChrW(931) & ")."
Console.WriteLine("Original string:")
Console.WriteLine(unicodeString)
' Encode the string.
Dim encodedBytes As Byte() = uni.GetBytes(unicodeString)
Console.WriteLine()
Console.WriteLine("Encoded bytes:")
Dim b As Byte
For Each b In encodedBytes
Console.Write("[{0}]", b)
Next b
Console.WriteLine()
' Decode bytes back to string.
' Notice Pi and Sigma characters are still present.
Dim decodedString As String = uni.GetString(encodedBytes)
Console.WriteLine()
Console.WriteLine("Decoded bytes:")
Console.WriteLine(decodedString)
End Sub
End Class
O exemplo seguinte usa a mesma cadeia de caracteres do anterior, exceto que escreve os bytes codificados num ficheiro e prefixa o fluxo de bytes com uma marca de ordem de bytes (BOM). Depois, lê o ficheiro de duas formas diferentes: como ficheiro de texto usando um StreamReader objeto; e como ficheiro binário. Como seria de esperar, nenhuma das sequências recém-lidas inclui a lista de materiais (BOM).
using System;
using System.IO;
using System.Text;
public class Example
{
public static void Main()
{
// Create a UTF-16 encoding that supports a BOM.
Encoding unicode = new UnicodeEncoding();
// A Unicode string with two characters outside an 8-bit code range.
String unicodeString =
"This Unicode string has 2 characters outside the " +
"ASCII range: \n" +
"Pi (\u03A0)), and Sigma (\u03A3).";
Console.WriteLine("Original string:");
Console.WriteLine(unicodeString);
Console.WriteLine();
// Encode the string.
Byte[] encodedBytes = unicode.GetBytes(unicodeString);
Console.WriteLine("The encoded string has {0} bytes.\n",
encodedBytes.Length);
// Write the bytes to a file with a BOM.
var fs = new FileStream(@".\UTF8Encoding.txt", FileMode.Create);
Byte[] bom = unicode.GetPreamble();
fs.Write(bom, 0, bom.Length);
fs.Write(encodedBytes, 0, encodedBytes.Length);
Console.WriteLine("Wrote {0} bytes to the file.\n", fs.Length);
fs.Close();
// Open the file using StreamReader.
var sr = new StreamReader(@".\UTF8Encoding.txt");
String newString = sr.ReadToEnd();
sr.Close();
Console.WriteLine("String read using StreamReader:");
Console.WriteLine(newString);
Console.WriteLine();
// Open the file as a binary file and decode the bytes back to a string.
fs = new FileStream(@".\UTF8Encoding.txt", FileMode.Open);
Byte[] bytes = new Byte[fs.Length];
fs.Read(bytes, 0, (int)fs.Length);
fs.Close();
String decodedString = unicode.GetString(bytes);
Console.WriteLine("Decoded bytes:");
Console.WriteLine(decodedString);
}
}
// The example displays the following output:
// Original string:
// This Unicode string has 2 characters outside the ASCII range:
// Pi (π), and Sigma (Σ).
//
// The encoded string has 172 bytes.
//
// Wrote 174 bytes to the file.
//
// String read using StreamReader:
// This Unicode string has 2 characters outside the ASCII range:
// Pi (π), and Sigma (Σ).
//
// Decoded bytes:
// This Unicode string has 2 characters outside the ASCII range:
// Pi (π), and Sigma (Σ).
Imports System.IO
Imports System.Text
Class Example
Public Shared Sub Main()
' Create a UTF-16 encoding that supports a BOM.
Dim unicode As New UnicodeEncoding()
' A Unicode string with two characters outside an 8-bit code range.
Dim unicodeString As String = _
"This Unicode string has 2 characters outside the " &
"ASCII range: " & vbCrLf &
"Pi (" & ChrW(&h03A0) & "), and Sigma (" & ChrW(&h03A3) & ")."
Console.WriteLine("Original string:")
Console.WriteLine(unicodeString)
Console.WriteLine()
' Encode the string.
Dim encodedBytes As Byte() = unicode.GetBytes(unicodeString)
Console.WriteLine("The encoded string has {0} bytes.",
encodedBytes.Length)
Console.WriteLine()
' Write the bytes to a file with a BOM.
Dim fs As New FileStream(".\UnicodeEncoding.txt", FileMode.Create)
Dim bom() As Byte = unicode.GetPreamble()
fs.Write(bom, 0, bom.Length)
fs.Write(encodedBytes, 0, encodedBytes.Length)
Console.WriteLine("Wrote {0} bytes to the file.", fs.Length)
fs.Close()
Console.WriteLine()
' Open the file using StreamReader.
Dim sr As New StreamReader(".\UnicodeEncoding.txt")
Dim newString As String = sr.ReadToEnd()
sr.Close()
Console.WriteLine("String read using StreamReader:")
Console.WriteLine(newString)
Console.WriteLine()
' Open the file as a binary file and decode the bytes back to a string.
fs = new FileStream(".\UnicodeEncoding.txt", FileMode.Open)
Dim bytes(fs.Length - 1) As Byte
fs.Read(bytes, 0, fs.Length)
fs.Close()
Dim decodedString As String = unicode.GetString(bytes)
Console.WriteLine("Decoded bytes:")
Console.WriteLine(decodedString)
End Sub
End Class
' The example displays the following output:
' Original string:
' This Unicode string has 2 characters outside the ASCII range:
' Pi (π), and Sigma (Σ).
'
' The encoded string has 172 bytes.
'
' Wrote 174 bytes to the file.
'
' String read using StreamReader:
' This Unicode string has 2 characters outside the ASCII range:
' Pi (π), and Sigma (Σ).
'
' Decoded bytes:
' This Unicode string has 2 characters outside the ASCII range:
' Pi (π), and Sigma (Σ).
Observações
A codificação é o processo de transformar um conjunto de caracteres Unicode em uma sequência de bytes. A descodificação é o processo de transformar uma sequência de bytes codificados num conjunto de caracteres Unicode.
O Padrão Unicode atribui um ponto de código (um número) a cada carácter em cada script suportado. Um Formato de Transformação Unicode (UTF) é uma forma de codificar esse ponto de código. O Padrão Unicode utiliza os seguintes UTFs:
UTF-8, que representa cada ponto de código como uma sequência de um a quatro bytes.
UTF-16, que representa cada ponto de código como uma sequência de um a dois inteiros de 16 bits.
UTF-32, que representa cada ponto de código como um inteiro de 32 bits.
Para mais informações sobre as UTFs e outras codificações suportadas por System.Text, consulte Codificação de Caracteres no Framework .NET.
A UnicodeEncoding classe representa uma codificação UTF-16. O codificador pode usar ordem de bytes big endian (byte mais significativo primeiro) ou ordem de bytes little endian (byte mínimo significativo primeiro). Por exemplo, a letra maiúscula latina A (ponto de código U+0041) é serializada da seguinte forma (em hexadecimal):
Ordem dos bytes big endian: 00 00 00 41
Ordem de bytes do little endian: 41 00 00 00
É geralmente mais eficiente armazenar caracteres Unicode usando a ordem nativa dos bytes de uma determinada plataforma. Por exemplo, é melhor usar a ordem de bytes little endian em plataformas little endian, tais como computadores Intel. A classe UnicodeEncoding corresponde às páginas de código Windows 1200 (ordem dos bytes little endian) e 1201 (ordem dos bytes big endian). Pode determinar a "endianidade" de uma determinada arquitetura chamando o BitConverter.IsLittleEndian método.
Opcionalmente, o UnicodeEncoding objeto fornece uma marca de ordem de bytes (BOM), que é um array de bytes que pode ser prefixado à sequência de bytes resultante do processo de codificação. Se o preâmbulo contiver uma marca de ordem de bytes (BOM), ajuda o descodificador a determinar a ordem dos bytes e o formato de transformação ou UTF.
Se a UnicodeEncoding instância estiver configurada para fornecer uma lista de materiais (BOM), pode recuperá-la chamando o GetPreamble método; caso contrário, o método devolve um array vazio. Note que, mesmo que um UnicodeEncoding objeto esteja configurado para suporte a listas de bebidas, deve incluir a lista de materiais no início do fluxo de bytes codificados, conforme apropriado; os métodos de codificação da UnicodeEncoding classe não fazem isto automaticamente.
Atenção
Para permitir a deteção de erros e tornar a instância da classe mais segura, deve instanciar um UnicodeEncoding objeto chamando o UnicodeEncoding(Boolean, Boolean, Boolean) construtor e definindo o seu throwOnInvalidBytes argumento para true. Com a deteção de erros, um método que deteta uma sequência inválida de caracteres ou bytes lança um ArgumentException. Sem deteção de erros, não é lançada nenhuma exceção, e a sequência inválida é geralmente ignorada.
Podes instanciar um UnicodeEncoding objeto de várias formas, dependendo se queres que ele forneça uma marca de ordem de bytes (BOM), se queres codificação big-endian ou little-endian, e se queres ativar a deteção de erros. A tabela seguinte lista os UnicodeEncoding construtores e as Encoding propriedades que retornam um UnicodeEncoding objeto.
| Membro | Endianness | Lista técnica | Deteção de erros |
|---|---|---|---|
| BigEndianUnicode | Big-endian | Yes | Não (Substituição) |
| Encoding.Unicode | Little-endian (ordem de bytes do menor para o maior) | Yes | Não (Substituição) |
| UnicodeEncoding.UnicodeEncoding() | Little-endian (ordem de bytes do menor para o maior) | Yes | Não (Substituição) |
| UnicodeEncoding(Boolean, Boolean) | Configurável | Configurável | Não (Substituição) |
| UnicodeEncoding.UnicodeEncoding(Boolean, Boolean, Boolean) | Configurável | Configurável | Configurável |
O GetByteCount método determina quantos bytes resultam na codificação de um conjunto de caracteres Unicode, e o GetBytes método executa a codificação propriamente dita.
Da mesma forma, o GetCharCount método determina quantos caracteres resultam na decodificação de uma sequência de bytes, e os GetChars métodos e GetString executam a decodificação propriamente dita.
Para um codificador ou descodificador que consiga guardar informação de estado ao codificar ou decodificar dados que abrangem vários blocos (como uma cadeia de 1 milhão de caracteres codificada em segmentos de 100.000 caracteres), use as GetEncoder propriedades e GetDecoder respetivamente.
Construtores
| Name | Description |
|---|---|
| UnicodeEncoding() |
Inicializa uma nova instância da UnicodeEncoding classe. |
| UnicodeEncoding(Boolean, Boolean, Boolean) |
Inicializa uma nova instância da UnicodeEncoding classe. Os parâmetros especificam se deve usar a ordem dos bytes big endian, se deve fornecer uma marca de ordem de bytes Unicode e se deve lançar uma exceção quando é detetada uma codificação inválida. |
| UnicodeEncoding(Boolean, Boolean) |
Inicializa uma nova instância da UnicodeEncoding classe. Os parâmetros especificam se deve usar a ordem dos bytes big endian e se o GetPreamble() método retorna uma marca de ordem de bytes Unicode. |
Campos
| Name | Description |
|---|---|
| CharSize |
Representa o tamanho do carácter Unicode em bytes. Este campo é constante. |
Propriedades
| Name | Description |
|---|---|
| BodyName |
Quando sobrescrito numa classe derivada, obtém um nome para a codificação atual que pode ser usada com as tags do corpo do agente de correio. (Herdado de Encoding) |
| CodePage |
Quando sobrescrito numa classe derivada, obtém o identificador da página de código do atual Encoding. (Herdado de Encoding) |
| DecoderFallback |
Obtém ou define o DecoderFallback objeto para o objeto atual Encoding . (Herdado de Encoding) |
| EncoderFallback |
Obtém ou define o EncoderFallback objeto para o objeto atual Encoding . (Herdado de Encoding) |
| EncodingName |
Quando sobrescrito numa classe derivada, obtém a descrição legível por humanos da codificação atual. (Herdado de Encoding) |
| HeaderName |
Quando sobrescrito numa classe derivada, obtém um nome para a codificação atual que pode ser usado com etiquetas de cabeçalho de agente de correio. (Herdado de Encoding) |
| IsBrowserDisplay |
Quando sobrescrito numa classe derivada, obtém um valor que indica se a codificação atual pode ser usada pelos clientes do navegador para exibir conteúdo. (Herdado de Encoding) |
| IsBrowserSave |
Quando é sobreposto numa classe derivada, obtém um valor que indica se a codificação atual pode ser usada pelos clientes de navegador para guardar conteúdo. (Herdado de Encoding) |
| IsMailNewsDisplay |
Quando é sobreposto numa classe derivada, obtém um valor que indica se a codificação atual pode ser usada por clientes de email e notícias para exibir conteúdo. (Herdado de Encoding) |
| IsMailNewsSave |
Quando é sobreposto numa classe derivada, obtém um valor que indica se a codificação atual pode ser usada por clientes de email e notícias para guardar conteúdo. (Herdado de Encoding) |
| IsReadOnly |
Quando é sobreposto numa classe derivada, obtém um valor que indica se a codificação atual é apenas de leitura. (Herdado de Encoding) |
| IsSingleByte |
Quando sobrescrito numa classe derivada, obtém um valor que indica se a codificação atual utiliza pontos de código de um byte. (Herdado de Encoding) |
| Preamble |
Quando sobrescrito numa classe derivada, devolve um span contendo a sequência de bytes que especifica a codificação utilizada. (Herdado de Encoding) |
| WebName |
Quando é sobreposto numa classe derivada, o nome é registado junto da Internet Assigned Numbers Authority (IANA) para a codificação atual. (Herdado de Encoding) |
| WindowsCodePage |
Quando sobrescrito numa classe derivada, obtém a página de código do sistema operativo Windows que mais corresponde à codificação atual. (Herdado de Encoding) |
Métodos
| Name | Description |
|---|---|
| Clone() |
Quando sobreposta numa classe derivada, cria-se uma cópia superficial do objeto atual Encoding . (Herdado de Encoding) |
| Equals(Object) |
Determina se o especificado Object é igual ao objeto atual UnicodeEncoding . |
| GetByteCount(Char[], Int32, Int32) |
Calcula o número de bytes produzidos ao codificar um conjunto de caracteres a partir do array de caracteres especificado. |
| GetByteCount(Char[]) |
Quando sobrescrito numa classe derivada, calcula o número de bytes produzidos ao codificar todos os caracteres do array de caracteres especificado. (Herdado de Encoding) |
| GetByteCount(Char*, Int32) |
Calcula o número de bytes produzidos ao codificar um conjunto de caracteres a partir do ponteiro especificado. |
| GetByteCount(Char*, Int32) |
Quando sobrescrito numa classe derivada, calcula o número de bytes produzidos ao codificar um conjunto de caracteres a partir do ponteiro especificado. (Herdado de Encoding) |
| GetByteCount(ReadOnlySpan<Char>) |
Quando sobrescrito numa classe derivada, calcula o número de bytes produzidos pela codificação dos caracteres no intervalo de caracteres especificado. (Herdado de Encoding) |
| GetByteCount(String, Int32, Int32) |
Quando sobrescrito numa classe derivada, calcula o número de bytes produzidos ao codificar um conjunto de caracteres a partir da cadeia especificada. (Herdado de Encoding) |
| GetByteCount(String) |
Calcula o número de bytes produzidos ao codificar os caracteres na cadeia especificada. |
| GetBytes(Char[], Int32, Int32, Byte[], Int32) |
Codifica um conjunto de caracteres do array de caracteres especificado no array de bytes especificado. |
| GetBytes(Char[], Int32, Int32) |
Quando sobrescrito numa classe derivada, codifica um conjunto de caracteres do array de caracteres especificado numa sequência de bytes. (Herdado de Encoding) |
| GetBytes(Char[]) |
Quando sobrescrito numa classe derivada, codifica todos os caracteres do array de caracteres especificado numa sequência de bytes. (Herdado de Encoding) |
| GetBytes(Char*, Int32, Byte*, Int32) |
Codifica um conjunto de caracteres a partir do ponteiro especificado numa sequência de bytes que são armazenados a partir do ponteiro especificado. |
| GetBytes(Char*, Int32, Byte*, Int32) |
Quando sobrescrito numa classe derivada, codifica um conjunto de caracteres a partir do ponteiro especificado numa sequência de bytes que são armazenados a partir do ponteiro de byte especificado. (Herdado de Encoding) |
| GetBytes(ReadOnlySpan<Char>, Span<Byte>) |
Quando sobrescrito numa classe derivada, codifica num espaço de bytes um conjunto de caracteres do intervalo de apenas leitura especificado. (Herdado de Encoding) |
| GetBytes(String, Int32, Int32, Byte[], Int32) |
Codifica um conjunto de caracteres do especificado String para o array de bytes especificado. |
| GetBytes(String, Int32, Int32) |
Quando sobrescrito numa classe derivada, codifica num array de bytes o número de caracteres especificados por |
| GetBytes(String) |
Codifica um conjunto de caracteres da cadeia especificada para o array de bytes especificado. |
| GetBytes(String) |
Quando sobrescrito numa classe derivada, codifica todos os caracteres da cadeia especificada numa sequência de bytes. (Herdado de Encoding) |
| GetCharCount(Byte[], Int32, Int32) |
Calcula o número de caracteres produzidos ao descodificar uma sequência de bytes a partir do array de bytes especificado. |
| GetCharCount(Byte[]) |
Quando sobrescrito numa classe derivada, calcula o número de caracteres produzidos pela decodificação de todos os bytes no array de bytes especificado. (Herdado de Encoding) |
| GetCharCount(Byte*, Int32) |
Calcula o número de caracteres produzidos ao descodificar uma sequência de bytes a partir do ponteiro de bytes especificado. |
| GetCharCount(Byte*, Int32) |
Quando sobrescrito numa classe derivada, calcula o número de caracteres produzidos ao decodificar uma sequência de bytes começando no ponteiro de byte especificado. (Herdado de Encoding) |
| GetCharCount(ReadOnlySpan<Byte>) |
Quando sobrescrito numa classe derivada, calcula o número de caracteres produzidos ao descodificar o intervalo de bytes de apenas leitura fornecido. (Herdado de Encoding) |
| GetChars(Byte[], Int32, Int32, Char[], Int32) |
Descodifica uma sequência de bytes do array de bytes especificado para o array de caracteres especificado. |
| GetChars(Byte[], Int32, Int32) |
Quando sobrescrito numa classe derivada, decodifica uma sequência de bytes do array de bytes especificado num conjunto de caracteres. (Herdado de Encoding) |
| GetChars(Byte[]) |
Quando sobrescrito numa classe derivada, descodifica todos os bytes do array de bytes especificado num conjunto de caracteres. (Herdado de Encoding) |
| GetChars(Byte*, Int32, Char*, Int32) |
Decodifica uma sequência de bytes a partir do ponteiro de byte especificado num conjunto de caracteres que são armazenados a partir do ponteiro especificado. |
| GetChars(Byte*, Int32, Char*, Int32) |
Quando sobrescrito numa classe derivada, decodifica uma sequência de bytes a partir do ponteiro de byte especificado para um conjunto de caracteres que são armazenados a partir do ponteiro especificado. (Herdado de Encoding) |
| GetChars(ReadOnlySpan<Byte>, Span<Char>) |
Quando sobrescrito numa classe derivada, decodifica todos os bytes do intervalo de bytes especificado para apenas leitura num espaço de caracteres. (Herdado de Encoding) |
| GetDecoder() |
Obtém um descodificador que converte uma sequência de bytes codificada em UTF-16 numa sequência de caracteres Unicode. |
| GetEncoder() |
Obtém um codificador que converte uma sequência de caracteres Unicode numa sequência de bytes codificada em UTF-16. |
| GetEncoder() |
Quando sobrescrito numa classe derivada, obtém-se um codificador que converte uma sequência de caracteres Unicode numa sequência codificada de bytes. (Herdado de Encoding) |
| GetHashCode() |
Devolve o código hash da instância atual. |
| GetMaxByteCount(Int32) |
Calcula o número máximo de bytes produzidos codificando o número especificado de caracteres. |
| GetMaxCharCount(Int32) |
Calcula o número máximo de caracteres produzidos ao descodificar o número especificado de bytes. |
| GetPreamble() |
Devolve uma marca de ordem de byte Unicode codificada no formato UTF-16, se o construtor desta instância solicitar uma marca de ordem de byte. |
| GetString(Byte[], Int32, Int32) |
Descodifica um intervalo de bytes de um array de bytes para uma cadeia. |
| GetString(Byte[], Int32, Int32) |
Quando sobrescrito numa classe derivada, decodifica uma sequência de bytes do array de bytes especificado numa cadeia. (Herdado de Encoding) |
| GetString(Byte[]) |
Quando sobrescrito numa classe derivada, decodifica todos os bytes do array de bytes especificado numa string. (Herdado de Encoding) |
| GetString(Byte*, Int32) |
Quando é sobreposto numa classe derivada, decodifica um número especificado de bytes começando num endereço especificado numa cadeia. (Herdado de Encoding) |
| GetString(ReadOnlySpan<Byte>) |
Quando sobrescrito numa classe derivada, decodifica todos os bytes do intervalo de bytes especificado numa string. (Herdado de Encoding) |
| GetType() |
Obtém o Type da instância atual. (Herdado de Object) |
| IsAlwaysNormalized() |
Recebe um valor que indica se a codificação atual está sempre normalizada, usando a forma de normalização por defeito. (Herdado de Encoding) |
| IsAlwaysNormalized(NormalizationForm) |
Quando sobrescrito numa classe derivada, obtém um valor que indica se a codificação atual está sempre normalizada, usando a forma de normalização especificada. (Herdado de Encoding) |
| MemberwiseClone() |
Cria uma cópia superficial do atual Object. (Herdado de Object) |
| ToString() |
Devolve uma cadeia que representa o objeto atual. (Herdado de Object) |