Encoding Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Rappresenta una codifica di caratteri.
public ref class Encoding abstract
public ref class Encoding abstract : ICloneable
public abstract class Encoding
public abstract class Encoding : ICloneable
[System.Serializable]
public abstract class Encoding
[System.Serializable]
[System.Runtime.InteropServices.ComVisible(true)]
public abstract class Encoding : ICloneable
type Encoding = class
type Encoding = class
interface ICloneable
[<System.Serializable>]
type Encoding = class
[<System.Serializable>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type Encoding = class
interface ICloneable
Public MustInherit Class Encoding
Public MustInherit Class Encoding
Implements ICloneable
- Ereditarietà
-
Encoding
- Derivato
- Attributi
- Implementazioni
Esempio
Nell'esempio seguente viene convertita una stringa da una codifica a un'altra.
Note
La byte[] matrice è l'unico tipo in questo esempio che contiene i dati codificati. I tipi .NET Char e String sono unicode, quindi la chiamata GetChars decodifica i dati in Unicode.
using System;
using System.Text;
class ConvertExample
{
static void Run()
{
string unicodeString = "This string contains the unicode character Pi (\u03a0)";
// Create two different encodings.
Encoding ascii = Encoding.ASCII;
Encoding unicode = Encoding.Unicode;
// Convert the string into a byte array.
byte[] unicodeBytes = unicode.GetBytes(unicodeString);
// Perform the conversion from one encoding to the other.
byte[] asciiBytes = Encoding.Convert(unicode, ascii, unicodeBytes);
// Convert the new byte[] into a char[] and then into a string.
char[] asciiChars = new char[ascii.GetCharCount(asciiBytes, 0, asciiBytes.Length)];
ascii.GetChars(asciiBytes, 0, asciiBytes.Length, asciiChars, 0);
string asciiString = new string(asciiChars);
// Display the strings created before and after the conversion.
Console.WriteLine("Original string: {0}", unicodeString);
Console.WriteLine("Ascii converted string: {0}", asciiString);
}
}
// The example displays the following output:
// Original string: This string contains the unicode character Pi (Π)
// Ascii converted string: This string contains the unicode character Pi (?)
Imports System.Text
Class Example1
Shared Sub Run()
Dim unicodeString As String = "This string contains the unicode character Pi (" & ChrW(&H03A0) & ")"
' Create two different encodings.
Dim ascii As Encoding = Encoding.ASCII
Dim unicode As Encoding = Encoding.Unicode
' Convert the string into a byte array.
Dim unicodeBytes As Byte() = unicode.GetBytes(unicodeString)
' Perform the conversion from one encoding to the other.
Dim asciiBytes As Byte() = Encoding.Convert(unicode, ascii, unicodeBytes)
' Convert the new byte array into a char array and then into a string.
Dim asciiChars(ascii.GetCharCount(asciiBytes, 0, asciiBytes.Length)-1) As Char
ascii.GetChars(asciiBytes, 0, asciiBytes.Length, asciiChars, 0)
Dim asciiString As New String(asciiChars)
' Display the strings created before and after the conversion.
Console.WriteLine("Original string: {0}", unicodeString)
Console.WriteLine("Ascii converted string: {0}", asciiString)
End Sub
End Class
' The example displays the following output:
' Original string: This string contains the unicode character Pi (Π)
' Ascii converted string: This string contains the unicode character Pi (?)
Commenti
La Encoding classe rappresenta una codifica di caratteri.
La codifica è il processo di trasformazione di un set di caratteri Unicode in una sequenza di byte. Al contrario, la decodifica è il processo di trasformazione di una sequenza di byte codificati in un set di caratteri Unicode. Per informazioni sui formati di trasformazione Unicode (UTFs) e altre codifiche supportate da Encoding, vedere Codifica dei caratteri in .NET.
Encoding è progettato per operare su caratteri Unicode invece di dati binari arbitrari, ad esempio matrici di byte. Se è necessario codificare dati binari arbitrari in testo, è consigliabile usare un protocollo come uuencode, implementato da metodi come Convert.ToBase64CharArray.
.NET fornisce le implementazioni seguenti della Encoding classe per supportare le codifiche Unicode correnti e altre codifiche:
ASCIIEncoding codifica i caratteri Unicode come caratteri ASCII a 7 bit singoli. Questa codifica supporta solo i valori di carattere compresi tra U+0000 e U+007F. Pagina di codice 20127. Disponibile anche tramite la ASCII proprietà .
UTF7Encoding codifica i caratteri Unicode usando la codifica UTF-7. Questa codifica supporta tutti i valori di carattere Unicode. Tabella codici 65000. Disponibile anche tramite la UTF7 proprietà .
UTF8Encoding codifica i caratteri Unicode usando la codifica UTF-8. Questa codifica supporta tutti i valori di carattere Unicode. Pagina codice 65001. Disponibile anche tramite la UTF8 proprietà .
UnicodeEncoding codifica i caratteri Unicode usando la codifica UTF-16. Sono supportati sia i formati little endian che big endian degli ordini di byte. Disponibile anche tramite la Unicode proprietà e la BigEndianUnicode proprietà .
UTF32Encoding codifica i caratteri Unicode usando la codifica UTF-32. Sono supportati sia little endian (pagina codice 12000) che big endian (pagina codice 12001). Disponibile anche tramite la UTF32 proprietà .
La Encoding classe è destinata principalmente alla conversione tra codifiche diverse e Unicode. Spesso una delle classi Unicode derivate è la scelta corretta per l'app.
Usare il GetEncoding metodo per ottenere altre codifiche e chiamare il GetEncodings metodo per ottenere un elenco di tutte le codifiche.
Elenco delle codifiche
Nella tabella seguente sono elencate le codifiche supportate da .NET. Elenca il numero della tabella codici di ogni codifica e i valori delle proprietà EncodingInfo.Name e EncodingInfo.DisplayName. Un segno di spunta nella colonna di supporto di .NET Framework, supporto di .NET Core o .NET 5 e versioni successive indica che la tabella codici è supportata in modo nativo dall'implementazione di .NET, indipendentemente dalla piattaforma sottostante. Per .NET Framework, la disponibilità di altre codifiche elencate nella tabella dipende dal sistema operativo. Per .NET Core e .NET 5 e versioni successive, sono disponibili altre codifiche usando la System.Text.CodePagesEncodingProvider classe o derivando dalla System.Text.EncodingProvider classe .
Note
Le tabelle codici la cui EncodingInfo.Name proprietà corrisponde a uno standard internazionale non sono necessariamente conformi a tale standard.
| Tabella codici | Name | Nome visualizzato | Supporto di .NET Framework | Supporto di .NET Core | Supporto di .NET 5 e versioni successive |
|---|---|---|---|---|---|
| 37 | IBM037 | IBM EBCDIC (US-Canada) | |||
| 437 | IBM437 | OEM Stati Uniti | |||
| 500 | IBM500 | IBM EBCDIC (International) | |||
| 708 | ASMO-708 | Arabo (ASMO 708) | |||
| 720 | DOS-720 | Arabo (DOS) | |||
| 737 | ibm737 | Greco (DOS) | |||
| 775 | ibm775 | Baltico (DOS) | |||
| 850 | ibm850 | Europa occidentale (DOS) | |||
| 852 | ibm852 | Europa centrale (DOS) | |||
| 855 | IBM855 | OEM Cirillico | |||
| 857 | ibm857 | Turco (DOS) | |||
| 858 | IBM00858 | OEM Multilingue Latino I | |||
| 860 | IBM860 | Portoghese (DOS) | |||
| 861 | ibm861 | Islandese (DOS) | |||
| 862 | DOS-862 | Ebraico (DOS) | |||
| 863 | IBM863 | Francese Canadese (DOS) | |||
| 864 | IBM864 | Arabo (864) | |||
| 865 | IBM865 | Nordico (DOS) | |||
| 866 | cp866 | Cirillico (DOS) | |||
| 869 | ibm869 | Greco, Moderno (DOS) | |||
| 870 | IBM870 | IBM EBCDIC (multilingue latino-2) | |||
| 874 | windows-874 | Tailandese (Windows) | |||
| 875 | cp875 | IBM EBCDIC (greco moderno) | |||
| 932 | shift_jis | Giapponese (Shift-JIS) | |||
| 936 | gb2312 | Cinese semplificato (GB2312) | ✓ | ||
| 949 | ks_c_5601-1987 | Coreano | |||
| 950 | big5 | Cinese tradizionale (Big5) | |||
| 1026 | IBM1026 | IBM EBCDIC (Latino-5 turco) | |||
| 1047 | IBM01047 | IBM Latin-1 | |||
| 1140 | IBM01140 | IBM EBCDIC (US-Canada-Euro) | |||
| 1141 | IBM01141 | IBM EBCDIC (Germany-Euro) | |||
| 1142 | IBM01142 | IBM EBCDIC (Danimarca-Norway-Euro) | |||
| 1143 | IBM01143 | IBM EBCDIC (Finlandia-Sweden-Euro) | |||
| 1144 | IBM01144 | IBM EBCDIC (Italy-Euro) | |||
| 1145 | IBM01145 | IBM EBCDIC (Spain-Euro) | |||
| 1146 | IBM01146 | IBM EBCDIC (UK-Euro) | |||
| 1147 | IBM01147 | IBM EBCDIC (France-Euro) | |||
| 1148 | IBM01148 | IBM EBCDIC (International-Euro) | |||
| 1149 | IBM01149 | IBM EBCDIC (Icelandic-Euro) | |||
| 1200 | utf-16 | Unicode | ✓ | ✓ | ✓ |
| 1201 | unicodeFFFE | Unicode (Grande endian) | ✓ | ✓ | ✓ |
| 1250 | windows-1250 | Europa centrale (Windows) | |||
| 1251 | windows-1251 | Cirillico (Windows) | |||
| 1252 | Windows-1252 | Europa occidentale (Windows) | ✓ | ||
| 1253 | windows-1253 | Greco (Windows) | |||
| 1254 | windows-1254 | Turco (Windows) | |||
| 1255 | windows-1255 | Ebraico (Windows) | |||
| 1256 | windows-1256 | Arabo (Windows) | |||
| 1257 | windows-1257 | Baltico (Windows) | |||
| 1258 | windows-1258 | Vietnamita (Windows) | |||
| 1361 | Johab | Coreano (Johab) | |||
| 10000 | Macintosh | Europa occidentale (Mac) | |||
| 10001 | x-mac-japanese | Giapponese (Mac) | |||
| 10002 | x-mac-chinesetrad | Cinese tradizionale (Mac) | |||
| 10003 | x-mac-korean | Coreano (Mac) | ✓ | ||
| 10004 | x-mac-arabic | Arabo (Mac) | |||
| 10005 | x-mac-ebraico | Ebraico (Mac) | |||
| 10006 | x-mac-greco | Greco (Mac) | |||
| 10007 | x-mac-cirillico | Cirillico (Mac) | |||
| 10008 | x-mac-chinesesimp | Cinese semplificato (Mac) | ✓ | ||
| 10010 | x-mac-romeno | Romeno (Mac) | |||
| 10017 | x-mac-ucraino | Ucraino (Mac) | |||
| 10021 | x-mac-thai | Thai (Mac) | |||
| 10029 | x-mac-ce | Europa centrale (Mac) | |||
| 10079 | x-mac-islandese | Islandese (Mac) | |||
| 10081 | x-mac-turkish | Turco (Mac) | |||
| 10082 | x-mac-croato | Croato (Mac) | |||
| 12000 | utf-32 | Unicode (UTF-32) | ✓ | ✓ | ✓ |
| 12001 | utf-32BE | Unicode (UTF-32 Big Endian) | ✓ | ✓ | ✓ |
| 20000 | x-Chinese-CNS | Cinese tradizionale (CNS) | |||
| 20001 | x-cp20001 | TCA Taiwan | |||
| 20002 | x-Chinese-Eten | Cinese tradizionale (Eten) | |||
| 20003 | x-cp20003 | IBM5550 Taiwan | |||
| 20004 | x-cp20004 | TeleText Taiwan | |||
| 20005 | x-cp20005 | Wang Taiwan | |||
| 20105 | x-IA5 | Europa occidentale (IA5) | |||
| 20106 | x-IA5-German | Tedesco (IA5) | |||
| 20107 | x-IA5-Swedish | Svedese (IA5) | |||
| 20108 | x-IA5-Norwegian | Norvegese (IA5) | |||
| 20127 | us-ascii | US-ASCII | ✓ | ✓ | ✓ |
| 20261 | x-cp20261 | T.61 | |||
| 20269 | x-cp20269 | ISO-6937 | |||
| 20273 | IBM273 | IBM EBCDIC (Germania) | |||
| 20277 | IBM277 | IBM EBCDIC (Denmark-Norway) | |||
| 20278 | IBM278 | IBM EBCDIC (Finland-Sweden) | |||
| 20280 | IBM280 | IBM EBCDIC (Italia) | |||
| 20284 | IBM284 | IBM EBCDIC (Spagna) | |||
| 20285 | IBM285 | IBM EBCDIC (REGNO UNITO) | |||
| 20290 | IBM290 | IBM EBCDIC (katakana giapponese) | |||
| 20297 | IBM297 | IBM EBCDIC (Francia) | |||
| 20420 | IBM420 | IBM EBCDIC (arabo) | |||
| 20423 | IBM423 | IBM EBCDIC (greco) | |||
| 20424 | IBM424 | IBM EBCDIC (ebraico) | |||
| 20833 | x-EBCDIC-KoreanExtended | IBM EBCDIC (coreano esteso) | |||
| 20838 | IBM-Thai | IBM EBCDIC (Thai) | |||
| 20866 | koi8-r | Cirillico (KOI8-R) | |||
| 20871 | IBM871 | IBM EBCDIC (Islandese) | |||
| 20880 | IBM880 | IBM EBCDIC (russo cirillico) | |||
| 20905 | IBM905 | IBM EBCDIC (turco) | |||
| 20924 | IBM00924 | IBM Latin-1 | |||
| 20932 | EUC-JP | Giapponese (JIS 0208-1990 e 0212-1990) | |||
| 20936 | x-cp20936 | Cinese semplificato (GB2312-80) | ✓ | ||
| 20949 | x-cp20949 | Wansung coreano | ✓ | ||
| 21025 | cp1025 | IBM EBCDIC (Serbian-Bulgariancirillico ) | |||
| 21866 | koi8-u | Cirillico (KOI8-U) | |||
| 28591 | iso-8859-1 | Europa occidentale (ISO) | ✓ | ✓ | ✓ |
| 28592 | iso-8859-2 | Europa centrale (ISO) | |||
| 28593 | iso-8859-3 | Latino 3 (ISO) | |||
| 28594 | iso-8859-4 | Baltico (ISO) | |||
| 28595 | iso-8859-5 | Cirillico (ISO) | |||
| 28596 | iso-8859-6 | Arabo (ISO) | |||
| 28597 | iso-8859-7 | Greco (ISO) | |||
| 28598 | iso-8859-8 | Ebraico (ISO-Visual) | ✓ | ||
| 28599 | iso-8859-9 | Turco (ISO) | |||
| 28603 | iso-8859-13 | Estone (ISO) | |||
| 28605 | iso-8859-15 | Latino 9 (ISO) | |||
| 29001 | x-Europa | Europa | |||
| 38598 | iso-8859-8-i | Ebraico (ISO-Logical) | ✓ | ||
| 50220 | iso-2022-jp | Giapponese (JIS) | ✓ | ||
| 50221 | csISO2022JP | Giapponese (JIS-Allow 1 byte Kana) | ✓ | ||
| 50222 | iso-2022-jp | Giapponese (JIS-Allow 1 byte Kana - SO/SI) | ✓ | ||
| 50225 | iso-2022-kr | Coreano (ISO) | ✓ | ||
| 50227 | x-cp50227 | Cinese semplificato (ISO-2022) | ✓ | ||
| 51932 | euc-jp | Giapponese (EUC) | ✓ | ||
| 51936 | EUC-CN | Cinese semplificato (EUC) | ✓ | ||
| 51949 | euc-kr | Coreano (EUC) | ✓ | ||
| 52936 | hz-gb-2312 | Cinese semplificato (HZ) | ✓ | ||
| 54936 | GB18030 | Cinese semplificato (GB18030) | ✓ | ||
| 57002 | x-iscii-de | ISCII Devanagari | ✓ | ||
| 57003 | x-iscii-be | ISCII Bengali (Formato di codifica standard per le scritture indiane, incluso il bengalese) | ✓ | ||
| 57004 | x-iscii-ta | ISCII Tamil | ✓ | ||
| 57005 | x-iscii-te | ISCII Telugu | ✓ | ||
| 57006 | x-iscii-as | ISCII Assamese | ✓ | ||
| 57007 | x-iscii-or | Codifica dei caratteri ISCII per l'Oriya | ✓ | ||
| 57008 | x-iscii-ka | ISCII Kannada | ✓ | ||
| 57009 | x-iscii-ma | ISCII Malayalam | ✓ | ||
| 57010 | x-iscii-gu | ISCII Gujarati | ✓ | ||
| 57011 | x-iscii-pa | ISCII Punjabi (un sistema di codifica usato per le lingue indiane tra cui il Punjabi) | ✓ | ||
| 65000 | utf-7 | Unicode (UTF-7) | ✓ | ✓ | |
| 65001 | utf-8 | Unicode (UTF-8) | ✓ | ✓ | ✓ |
Nell'esempio seguente vengono chiamati i metodi GetEncoding(Int32) e GetEncoding(String) per ottenere la codifica della pagina codici Windows greca. Confronta gli Encoding oggetti restituiti dalle chiamate al metodo per indicare che sono uguali, e quindi esegue il mapping visualizzando il punto di codice Unicode e il valore della tabella codici corrispondente per ogni carattere nell'alfabeto greco.
using System;
using System.Text;
public class GetEncodingExample
{
public static void Run()
{
Encoding enc = Encoding.GetEncoding(1253);
Encoding altEnc = Encoding.GetEncoding("windows-1253");
Console.WriteLine($"{enc.EncodingName} = Code Page {altEnc.CodePage}: {enc.Equals(altEnc)}");
string greekAlphabet = "Α α Β β Γ γ Δ δ Ε ε Ζ ζ Η η " +
"Θ θ Ι ι Κ κ Λ λ Μ μ Ν ν Ξ ξ " +
"Ο ο Π π Ρ ρ Σ σ ς Τ τ Υ υ " +
"Φ φ Χ χ Ψ ψ Ω ω";
Console.OutputEncoding = Encoding.UTF8;
byte[] bytes = enc.GetBytes(greekAlphabet);
Console.WriteLine("{0,-12} {1,20} {2,20:X2}", "Character",
"Unicode Code Point", "Code Page 1253");
for (int ctr = 0; ctr < bytes.Length; ctr++) {
if (greekAlphabet[ctr].Equals(' '))
continue;
Console.WriteLine("{0,-12} {1,20} {2,20:X2}", greekAlphabet[ctr],
GetCodePoint(greekAlphabet[ctr]), bytes[ctr]);
}
}
private static string GetCodePoint(char ch)
{
string retVal = "u+";
byte[] bytes = Encoding.Unicode.GetBytes(ch.ToString());
for (int ctr = bytes.Length - 1; ctr >= 0; ctr--)
retVal += bytes[ctr].ToString("X2");
return retVal;
}
}
// The example displays the following output:
// Character Unicode Code Point Code Page 1253
// Α u+0391 C1
// α u+03B1 E1
// Β u+0392 C2
// β u+03B2 E2
// Γ u+0393 C3
// γ u+03B3 E3
// Δ u+0394 C4
// δ u+03B4 E4
// Ε u+0395 C5
// ε u+03B5 E5
// Ζ u+0396 C6
// ζ u+03B6 E6
// Η u+0397 C7
// η u+03B7 E7
// Θ u+0398 C8
// θ u+03B8 E8
// Ι u+0399 C9
// ι u+03B9 E9
// Κ u+039A CA
// κ u+03BA EA
// Λ u+039B CB
// λ u+03BB EB
// Μ u+039C CC
// μ u+03BC EC
// Ν u+039D CD
// ν u+03BD ED
// Ξ u+039E CE
// ξ u+03BE EE
// Ο u+039F CF
// ο u+03BF EF
// Π u+03A0 D0
// π u+03C0 F0
// Ρ u+03A1 D1
// ρ u+03C1 F1
// Σ u+03A3 D3
// σ u+03C3 F3
// ς u+03C2 F2
// Τ u+03A4 D4
// τ u+03C4 F4
// Υ u+03A5 D5
// υ u+03C5 F5
// Φ u+03A6 D6
// φ u+03C6 F6
// Χ u+03A7 D7
// χ u+03C7 F7
// Ψ u+03A8 D8
// ψ u+03C8 F8
// Ω u+03A9 D9
// ω u+03C9 F9
Imports System.Text
Module Example2
Public Sub Run()
Dim enc As Encoding = Encoding.GetEncoding(1253)
Dim altEnc As Encoding = Encoding.GetEncoding("windows-1253")
Console.WriteLine("{0} = Code Page {1}: {2}", enc.EncodingName,
altEnc.CodePage, enc.Equals(altEnc))
Dim greekAlphabet As String = "Α α Β β Γ γ Δ δ Ε ε Ζ ζ Η η " +
"Θ θ Ι ι Κ κ Λ λ Μ μ Ν ν Ξ ξ " +
"Ο ο Π π Ρ ρ Σ σ ς Τ τ Υ υ " +
"Φ φ Χ χ Ψ ψ Ω ω"
Console.OutputEncoding = Encoding.UTF8
Dim bytes() As Byte = enc.GetBytes(greekAlphabet)
Console.WriteLine("{0,-12} {1,20} {2,20:X2}", "Character",
"Unicode Code Point", "Code Page 1253")
For ctr As Integer = 0 To bytes.Length - 1
If greekAlphabet(ctr).Equals(" "c) Then Continue For
Console.WriteLine("{0,-12} {1,20} {2,20:X2}", greekAlphabet(ctr),
GetCodePoint(greekAlphabet(ctr)), bytes(ctr))
Next
End Sub
Private Function GetCodePoint(ch As String) As String
Dim retVal As String = "u+"
Dim bytes() As Byte = Encoding.Unicode.GetBytes(ch)
For ctr As Integer = bytes.Length - 1 To 0 Step -1
retVal += bytes(ctr).ToString("X2")
Next
Return retVal
End Function
End Module
' The example displays the following output:
' Character Unicode Code Point Code Page 1253
' Α u+0391 C1
' α u+03B1 E1
' Β u+0392 C2
' β u+03B2 E2
' Γ u+0393 C3
' γ u+03B3 E3
' Δ u+0394 C4
' δ u+03B4 E4
' Ε u+0395 C5
' ε u+03B5 E5
' Ζ u+0396 C6
' ζ u+03B6 E6
' Η u+0397 C7
' η u+03B7 E7
' Θ u+0398 C8
' θ u+03B8 E8
' Ι u+0399 C9
' ι u+03B9 E9
' Κ u+039A CA
' κ u+03BA EA
' Λ u+039B CB
' λ u+03BB EB
' Μ u+039C CC
' μ u+03BC EC
' Ν u+039D CD
' ν u+03BD ED
' Ξ u+039E CE
' ξ u+03BE EE
' Ο u+039F CF
' ο u+03BF EF
' Π u+03A0 D0
' π u+03C0 F0
' Ρ u+03A1 D1
' ρ u+03C1 F1
' Σ u+03A3 D3
' σ u+03C3 F3
' ς u+03C2 F2
' Τ u+03A4 D4
' τ u+03C4 F4
' Υ u+03A5 D5
' υ u+03C5 F5
' Φ u+03A6 D6
' φ u+03C6 F6
' Χ u+03A7 D7
' χ u+03C7 F7
' Ψ u+03A8 D8
' ψ u+03C8 F8
' Ω u+03A9 D9
' ω u+03C9 F9
Se i dati da convertire sono disponibili solo in blocchi sequenziali (ad esempio i dati letti da un flusso) o se la quantità di dati è così grande che deve essere suddivisa in blocchi più piccoli, è necessario usare rispettivamente l'oggetto Decoder o fornito Encoder dal GetDecoder metodo o dal GetEncoder metodo di una classe derivata.
I codificatori UTF-16 e UTF-32 possono usare prima l'ordine dei byte big endian (byte più significativo) o l'ordine dei byte little endian (byte meno significativo). Ad esempio, la lettera maiuscola latina A (U+0041) viene serializzata come segue (in formato esadecimale):
- Ordine dei byte big endian UTF-16: 00 41
- UTF-16 modello little endian (ordine dei byte: 41 00)
- Ordine di byte UTF-32 big endian: 00 00 00 41
- Ordine dei byte UTF-32 little endian: 41 00 00 00
In genere è più efficiente archiviare i caratteri Unicode usando l'ordine dei byte nativo. Ad esempio, è meglio usare l'ordine dei byte little endian su piattaforme little endian, ad esempio i computer Intel.
Il GetPreamble metodo recupera una matrice di byte che include il byte order mark (BOM). Se questa matrice di byte è preceduta da un flusso codificato, consente al decodificatore di identificare il formato di codifica usato.
Per ulteriori informazioni sull'ordine dei byte e sul contrassegno di ordine dei byte, vedere Lo standard Unicode nella home page Unicode.
È importante notare che le classi di codifica consentono agli errori di:
- Passare automaticamente a un carattere "?".
- Usa un carattere "più adatto".
- Passare a un comportamento specifico dell'applicazione tramite l'uso delle classi EncoderFallback e DecoderFallback con il carattere di sostituzione Unicode U+FFFD.
È consigliabile generare un'eccezione per qualsiasi errore del flusso di dati. Un'app usa un flag "throwonerror" quando applicabile o usa le EncoderExceptionFallback classi e DecoderExceptionFallback . Il fallback più adatto spesso non è consigliato perché può causare perdita di dati o confusione ed è più lento rispetto alle semplici sostituzioni dei caratteri. Per le codifiche ANSI, il comportamento più appropriato è l'impostazione predefinita.
Costruttori
| Nome | Descrizione |
|---|---|
| Encoding() |
Inizializza una nuova istanza della classe Encoding. |
| Encoding(Int32, EncoderFallback, DecoderFallback) |
Inizializza una nuova istanza della Encoding classe che corrisponde alla tabella codici specificata con le strategie di fallback del codificatore e del decodificatore specificate. |
| Encoding(Int32) |
Inizializza una nuova istanza della Encoding classe che corrisponde alla tabella codici specificata. |
Proprietà
| Nome | Descrizione |
|---|---|
| ASCII |
Ottiene una codifica per il set di caratteri ASCII (a 7 bit). |
| BigEndianUnicode |
Ottiene una codifica per il formato UTF-16 che usa l'ordine dei byte big endian. |
| BodyName |
In caso di override in una classe derivata, ottiene un nome per la codifica corrente che può essere utilizzata con i tag del corpo dell'agente di posta. |
| CodePage |
In caso di override in una classe derivata, ottiene l'identificatore della tabella codici dell'oggetto corrente Encoding. |
| DecoderFallback |
Ottiene o imposta l'oggetto DecoderFallback per l'oggetto corrente Encoding . |
| Default |
Ottiene la codifica predefinita per questa implementazione di .NET. |
| EncoderFallback |
Ottiene o imposta l'oggetto EncoderFallback per l'oggetto corrente Encoding . |
| EncodingName |
In caso di override in una classe derivata, ottiene la descrizione leggibile della codifica corrente. |
| HeaderName |
In caso di override in una classe derivata, ottiene un nome per la codifica corrente che può essere utilizzata con i tag di intestazione dell'agente di posta elettronica. |
| IsBrowserDisplay |
In caso di override in una classe derivata, ottiene un valore che indica se la codifica corrente può essere utilizzata dai client del browser per la visualizzazione del contenuto. |
| IsBrowserSave |
In caso di override in una classe derivata, ottiene un valore che indica se la codifica corrente può essere utilizzata dai client del browser per il salvataggio del contenuto. |
| IsMailNewsDisplay |
In caso di override in una classe derivata, ottiene un valore che indica se la codifica corrente può essere utilizzata dai client di posta elettronica e notizie per la visualizzazione del contenuto. |
| IsMailNewsSave |
In caso di override in una classe derivata, ottiene un valore che indica se la codifica corrente può essere utilizzata dai client di posta elettronica e notizie per il salvataggio del contenuto. |
| IsReadOnly |
In caso di override in una classe derivata, ottiene un valore che indica se la codifica corrente è di sola lettura. |
| IsSingleByte |
In caso di override in una classe derivata, ottiene un valore che indica se la codifica corrente utilizza punti di codice a byte singolo. |
| Latin1 |
Ottiene una codifica per il set di caratteri Latin1 (ISO-8859-1). |
| Preamble |
Quando sottoposto a override in una classe derivata, restituisce un intervallo contenente la sequenza di byte che specifica la codifica utilizzata. |
| Unicode |
Ottiene una codifica per il formato UTF-16 usando l'ordine dei byte little endian. |
| UTF32 |
Ottiene una codifica per il formato UTF-32 usando l'ordine dei byte little endian. |
| UTF7 |
Obsoleti.
Ottiene una codifica per il formato UTF-7. |
| UTF8 |
Ottiene una codifica per il formato UTF-8. |
| WebName |
In caso di override in una classe derivata, ottiene il nome registrato con Internet Assigned Numbers Authority (IANA) per la codifica corrente. |
| WindowsCodePage |
Quando sottoposto a override in una classe derivata, ottiene la tabella codici del sistema operativo Windows che corrisponde più strettamente alla codifica corrente. |
Metodi
| Nome | Descrizione |
|---|---|
| Clone() |
Quando sottoposto a override in una classe derivata, crea una copia superficiale dell'oggetto corrente Encoding . |
| Convert(Encoding, Encoding, Byte[], Int32, Int32) |
Converte un intervallo di byte in una matrice di byte da una codifica a un'altra. |
| Convert(Encoding, Encoding, Byte[]) |
Converte un'intera matrice di byte da una codifica a un'altra. |
| CreateTranscodingStream(Stream, Encoding, Encoding, Boolean) |
Crea un oggetto Stream che serve per eseguire la transcodifica dei dati tra un oggetto interno Encoding e un oggetto esterno Encoding, simile a Convert(Encoding, Encoding, Byte[]). |
| Equals(Object) |
Determina se l'oggetto specificato Object è uguale all'istanza corrente. |
| GetByteCount(Char[], Int32, Int32) |
In caso di override in una classe derivata, calcola il numero di byte prodotti dalla codifica di un set di caratteri dalla matrice di caratteri specificata. |
| GetByteCount(Char[]) |
Quando sottoposto a override in una classe derivata, calcola il numero di byte prodotti dalla codifica di tutti i caratteri nella matrice di caratteri specificata. |
| GetByteCount(Char*, Int32) |
Quando sottoposto a override in una classe derivata, calcola il numero di byte prodotti dalla codifica di un set di caratteri a partire dal puntatore di caratteri specificato. |
| GetByteCount(ReadOnlySpan<Char>) |
Quando sottoposto a override in una classe derivata, calcola il numero di byte prodotti dalla codifica dei caratteri nell'intervallo di caratteri specificato. |
| GetByteCount(String, Int32, Int32) |
In caso di override in una classe derivata, calcola il numero di byte prodotti dalla codifica di un set di caratteri dalla stringa specificata. |
| GetByteCount(String) |
In caso di override in una classe derivata, calcola il numero di byte prodotti dalla codifica dei caratteri nella stringa specificata. |
| GetBytes(Char[], Int32, Int32, Byte[], Int32) |
In caso di override in una classe derivata, codifica un set di caratteri dalla matrice di caratteri specificata nella matrice di byte specificata. |
| GetBytes(Char[], Int32, Int32) |
In caso di override in una classe derivata, codifica un set di caratteri dalla matrice di caratteri specificata in una sequenza di byte. |
| GetBytes(Char[]) |
In caso di override in una classe derivata, codifica tutti i caratteri nella matrice di caratteri specificata in una sequenza di byte. |
| GetBytes(Char*, Int32, Byte*, Int32) |
Quando sottoposto a override in una classe derivata, codifica un set di caratteri a partire dal puntatore di carattere specificato in una sequenza di byte archiviati a partire dal puntatore di byte specificato. |
| GetBytes(ReadOnlySpan<Char>, Span<Byte>) |
Quando sottoposto a override in una classe derivata, codifica in un intervallo di byte un set di caratteri dall'intervallo di sola lettura specificato. |
| GetBytes(String, Int32, Int32, Byte[], Int32) |
In caso di override in una classe derivata, codifica un set di caratteri dalla stringa specificata nella matrice di byte specificata. |
| GetBytes(String, Int32, Int32) |
Quando sottoposto a override in una classe derivata, codifica in una matrice di byte il numero di caratteri specificato dalla |
| GetBytes(String) |
Quando sottoposto a override in una classe derivata, codifica tutti i caratteri nella stringa specificata in una sequenza di byte. |
| GetCharCount(Byte[], Int32, Int32) |
In caso di override in una classe derivata, calcola il numero di caratteri prodotti decodificando una sequenza di byte dalla matrice di byte specificata. |
| GetCharCount(Byte[]) |
In caso di override in una classe derivata, calcola il numero di caratteri prodotti decodificando tutti i byte nella matrice di byte specificata. |
| GetCharCount(Byte*, Int32) |
Quando sottoposto a override in una classe derivata, calcola il numero di caratteri prodotti dalla decodifica di una sequenza di byte a partire dal puntatore di byte specificato. |
| GetCharCount(ReadOnlySpan<Byte>) |
In caso di override in una classe derivata, calcola il numero di caratteri prodotti decodificando l'intervallo di byte di sola lettura fornito. |
| GetChars(Byte[], Int32, Int32, Char[], Int32) |
In caso di override in una classe derivata, decodifica una sequenza di byte dalla matrice di byte specificata nella matrice di caratteri specificata. |
| GetChars(Byte[], Int32, Int32) |
In caso di override in una classe derivata, decodifica una sequenza di byte dalla matrice di byte specificata in un set di caratteri. |
| GetChars(Byte[]) |
In caso di override in una classe derivata, decodifica tutti i byte nella matrice di byte specificata in un set di caratteri. |
| GetChars(Byte*, Int32, Char*, Int32) |
Quando sottoposto a override in una classe derivata, decodifica una sequenza di byte a partire dal puntatore di byte specificato in un set di caratteri archiviati a partire dal puntatore di caratteri specificato. |
| GetChars(ReadOnlySpan<Byte>, Span<Char>) |
In caso di override in una classe derivata, decodifica tutti i byte nell'intervallo di byte di sola lettura specificato in un intervallo di caratteri. |
| GetDecoder() |
In caso di override in una classe derivata, ottiene un decodificatore che converte una sequenza codificata di byte in una sequenza di caratteri. |
| GetEncoder() |
In caso di override in una classe derivata, ottiene un codificatore che converte una sequenza di caratteri Unicode in una sequenza codificata di byte. |
| GetEncoding(Int32, EncoderFallback, DecoderFallback) |
Restituisce la codifica associata all'identificatore della tabella codici specificato. I parametri specificano un gestore errori per i caratteri che non possono essere codificati e sequenze di byte che non possono essere decodificate. |
| GetEncoding(Int32) |
Restituisce la codifica associata all'identificatore della tabella codici specificato. |
| GetEncoding(String, EncoderFallback, DecoderFallback) |
Restituisce la codifica associata al nome della tabella codici specificato. I parametri specificano un gestore errori per i caratteri che non possono essere codificati e sequenze di byte che non possono essere decodificate. |
| GetEncoding(String) |
Restituisce la codifica associata al nome della tabella codici specificato. |
| GetEncodings() |
Restituisce una matrice che contiene tutte le codifiche. |
| GetHashCode() |
Restituisce il codice hash per l'istanza corrente. |
| GetMaxByteCount(Int32) |
In caso di override in una classe derivata, calcola il numero massimo di byte prodotti dalla codifica del numero specificato di caratteri. |
| GetMaxCharCount(Int32) |
In caso di override in una classe derivata, calcola il numero massimo di caratteri prodotti decodificando il numero specificato di byte. |
| GetPreamble() |
Quando sottoposto a override in una classe derivata, restituisce una sequenza di byte che specifica la codifica utilizzata. |
| GetString(Byte[], Int32, Int32) |
In caso di override in una classe derivata, decodifica una sequenza di byte dalla matrice di byte specificata in una stringa. |
| GetString(Byte[]) |
In caso di override in una classe derivata, decodifica tutti i byte nella matrice di byte specificata in una stringa. |
| GetString(Byte*, Int32) |
Quando sottoposto a override in una classe derivata, decodifica un numero specificato di byte a partire da un indirizzo specificato in una stringa. |
| GetString(ReadOnlySpan<Byte>) |
Quando sottoposto a override in una classe derivata, decodifica tutti i byte nell'intervallo di byte specificato in una stringa. |
| GetType() |
Ottiene il Type dell'istanza corrente. (Ereditato da Object) |
| IsAlwaysNormalized() |
Ottiene un valore che indica se la codifica corrente è sempre normalizzata, utilizzando il formato di normalizzazione predefinito. |
| IsAlwaysNormalized(NormalizationForm) |
In caso di override in una classe derivata, ottiene un valore che indica se la codifica corrente è sempre normalizzata, utilizzando il formato di normalizzazione specificato. |
| MemberwiseClone() |
Crea una copia superficiale del Objectcorrente. (Ereditato da Object) |
| RegisterProvider(EncodingProvider) |
Registra un provider di codifica. |
| ToString() |
Restituisce una stringa che rappresenta l'oggetto corrente. (Ereditato da Object) |
| TryGetBytes(ReadOnlySpan<Char>, Span<Byte>, Int32) |
Codifica in un intervallo di byte un set di caratteri dall'intervallo di sola lettura specificato se la destinazione è sufficientemente grande. |
| TryGetChars(ReadOnlySpan<Byte>, Span<Char>, Int32) |
Decodifica in un intervallo di caratteri un set di byte dall'intervallo di sola lettura specificato se la destinazione è sufficientemente grande. |
Metodi di estensione
| Nome | Descrizione |
|---|---|
| GetBytes(Encoding, ReadOnlySequence<Char>, IBufferWriter<Byte>) |
Decodifica l'oggetto specificato ReadOnlySequence<T> in |
| GetBytes(Encoding, ReadOnlySequence<Char>, Span<Byte>) |
Codifica l'oggetto specificato ReadOnlySequence<T> in |
| GetBytes(Encoding, ReadOnlySequence<Char>) |
Codifica l'oggetto specificato ReadOnlySequence<T> in una Byte matrice usando l'oggetto specificato Encoding. |
| GetBytes(Encoding, ReadOnlySpan<Char>, IBufferWriter<Byte>) |
Codifica l'oggetto specificato ReadOnlySpan<T> in |
| GetChars(Encoding, ReadOnlySequence<Byte>, IBufferWriter<Char>) |
Decodifica l'oggetto specificato ReadOnlySequence<T> in |
| GetChars(Encoding, ReadOnlySequence<Byte>, Span<Char>) |
Decodifica l'oggetto specificato ReadOnlySequence<T> in |
| GetChars(Encoding, ReadOnlySpan<Byte>, IBufferWriter<Char>) |
Decodifica l'oggetto specificato ReadOnlySpan<T> in |
| GetString(Encoding, ReadOnlySequence<Byte>) |
Decodifica l'oggetto specificato ReadOnlySequence<T> in un String oggetto utilizzando l'oggetto specificato Encoding. |