Codifica dei tipi di base

I caratteri sono entità astratte che possono essere rappresentate mediante diversi schemi di caratteri o tabelle codici. Se si utilizza la codifica Unicode UTF-16, ad esempio, i caratteri verranno rappresentati come sequenze di valori integer a 16 bit, mentre se si utilizza la codifica Unicode UTF-8 gli stessi caratteri verranno rappresentati come sequenze di byte a 8 bit. Common Language Runtime rappresenta i caratteri mediante la codifica Unicode UTF-16 (Unicode Transformation Format), ovvero il formato di codifica a 16 bit.

Nelle applicazioni destinate al Common Language Runtime viene utilizzata la codifica per eseguire il mapping delle rappresentazioni dei caratteri dallo schema dei caratteri nativo ad altri schemi. Viene utilizzata invece la decodifica per eseguire il mapping dei caratteri dagli schemi non nativi allo schema nativo. Nella tabella riportata di seguito sono elencate le classi più comunemente utilizzate nello spazio dei nomi System.Text per la codifica e la decodifica dei caratteri.

Schema dei caratteri Classe Descrizione

Codifica ASCII

System.Text.ASCIIEncoding

Converte da e verso caratteri ASCII.

Codifica multipla

System.Text.Encoding

Converte i caratteri da e verso diversi sistemi di codifica come specificato nel metodo Convert.

Codifica Unicode UTF-16

System.Text.UnicodeEncoding

Converte da e verso la codifica UTF-16. In questo schema i caratteri sono rappresentati come valori integer a 16 bit.

Codifica Unicode UTF-8

System.Text.UTF8Encoding

Converte da e verso la codifica UTF-8. In questo schema di codifica a larghezza variabile i caratteri sono rappresentati utilizzando da uno a quattro byte.

Nell'esempio riportato di seguito una stringa Unicode viene convertita in una matrice di byte mediante il metodo ASCIIEncoding.GetBytes. Ciascun byte della matrice rappresenta il valore ASCII della lettera che si trova nella stessa posizione della stringa.

Dim MyString As String = "Encoding String."
Dim AE As New ASCIIEncoding()
Dim ByteArray As Byte() = AE.GetBytes(MyString)
Dim x as Integer
For x = 0 To ByteArray.Length - 1
   Console.Write("{0} ", ByteArray(x))
Next
string MyString = "Encoding String.";
ASCIIEncoding AE = new ASCIIEncoding();
byte[] ByteArray = AE.GetBytes(MyString);
for(int x = 0;x <= ByteArray.Length - 1; x++)
{
   Console.Write("{0} ", ByteArray[x]);
}

Nell'esempio di codice l'output riportato di seguito viene visualizzato nella console. Il byte 69 rappresenta il valore ASCII del carattere E, il byte 110 rappresenta il valore ASCII del carattere n e così via.

69 110 99 111 100 105 110 103 32 83 116 114 105 110 103 46

Nell'esempio di codice seguente la matrice di byte precedente viene convertita in una matrice di caratteri mediante la classe ASCIIEncoding. Per la decodifica della matrice di byte viene utilizzato il metodo GetChars.

Dim AE As New ASCIIEncoding()
Dim ByteArray As Byte() = { 69, 110, 99, 111, 100, 105, 110, 103, 32, 83, 116, 114, 105, 110, 103, 46 }
Dim CharArray As Char() = AE.GetChars(ByteArray)
Dim x As Integer
For x = 0 To CharArray.Length - 1
   Console.Write(CharArray(x))
Next
ASCIIEncoding AE = new ASCIIEncoding();
byte[] ByteArray = { 69, 110, 99, 111, 100, 105, 110, 103, 32, 83, 116, 114, 105, 110, 103, 46 };
char[] CharArray = AE.GetChars(ByteArray);
for(int x = 0;x <= CharArray.Length - 1; x++)
{
   Console.Write(CharArray[x]);
}

Il codice precedente consente di visualizzare il testo Encoding String. nella console.

Vedere anche

Riferimenti

System.Text
System.Text.ASCIIEncoding
System.Text.Encoding
System.Text.UnicodeEncoding
System.Text.UTF7Encoding
System.Text.UTF8Encoding

Altre risorse

Utilizzo dei tipi di base