Para a conversão entre codificações de caracteres, ASCII, Unicode, UTF-8 e outras, o namespace
System.Text fornece recursos para tal fim.
Sintaxe
using System.Text
Os métodos GetBytes e GetString são usados respectivamente para recuperar os
bytes contidos em uma string em uma codificação e o segundo retorna uma string definida
em uma codificação.
Sintaxe
Encoding.nome_encode.GetBytes(char[] array)
Encoding.nome_encode.GetString(char[] array)
No exemplo abaixo, uma string UTF-16(2 bytes) padrão de C# é convertida para ASCII(1 byte).
As propriedades Length são utilizadas para mostrar a diferença entre quantidade de caracteres
nas string e seus tamanhos reais em bytes ocupados em memória.
Exemplo 9
using System;
using System.Text;
class HelloWorld
{
static void Main()
{
//UTF-16
string str = "string C# ç"; //default utf-16
Console.WriteLine(str);
Console.WriteLine("length: {0}",str.Length);
byte[] strBytes = Encoding.Default.GetBytes(str.ToCharArray()); //conversão p/ bytes
Console.WriteLine("size: {0}\n",strBytes.Length);
//ASCII
string strAscii = Encoding.ASCII.GetString(strBytes); //conversão UTF-16 -> ASCII
Console.WriteLine(strAscii);
Console.WriteLine("\nlength: {0}",strAscii.Length);
strBytes = Encoding.ASCII.GetBytes(strAscii.ToCharArray());
Console.WriteLine("size: {0}",strBytes.Length);
}
}
Saída
string C# ç
length: 11
size: 12
string C# ç
length: 12
size: 12