UTF8Encoding.GetDecoder Metodo
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.
Ottiene un decodificatore che converte una sequenza di byte con codifica UTF-8 in una sequenza di caratteri Unicode.
public:
override System::Text::Decoder ^ GetDecoder();
public override System.Text.Decoder GetDecoder ();
override this.GetDecoder : unit -> System.Text.Decoder
Public Overrides Function GetDecoder () As Decoder
Restituisce
Decodificatore che converte una sequenza di byte con codifica UTF-8 in una sequenza di caratteri Unicode.
Esempio
Nell'esempio seguente viene utilizzato il GetDecoder metodo per ottenere un decodificatore UTF-8. Il decodificatore converte una sequenza di byte in una sequenza di caratteri.
using namespace System;
using namespace System::Text;
using namespace System::Collections;
int main()
{
array<Char>^chars;
array<Byte>^bytes = {99,204,128,234,130,160};
Decoder^ utf8Decoder = Encoding::UTF8->GetDecoder();
int charCount = utf8Decoder->GetCharCount( bytes, 0, bytes->Length );
chars = gcnew array<Char>(charCount);
int charsDecodedCount = utf8Decoder->GetChars( bytes, 0, bytes->Length, chars, 0 );
Console::WriteLine( "{0} characters used to decode bytes.", charsDecodedCount );
Console::Write( "Decoded chars: " );
IEnumerator^ myEnum = chars->GetEnumerator();
while ( myEnum->MoveNext() )
{
Char c = safe_cast<Char>(myEnum->Current);
Console::Write( "[{0}]", c.ToString() );
}
Console::WriteLine();
}
using System;
using System.Text;
class UTF8EncodingExample {
public static void Main() {
Char[] chars;
Byte[] bytes = new Byte[] {
99, 204, 128, 234, 130, 160
};
Decoder utf8Decoder = Encoding.UTF8.GetDecoder();
int charCount = utf8Decoder.GetCharCount(bytes, 0, bytes.Length);
chars = new Char[charCount];
int charsDecodedCount = utf8Decoder.GetChars(bytes, 0, bytes.Length, chars, 0);
Console.WriteLine(
"{0} characters used to decode bytes.", charsDecodedCount
);
Console.Write("Decoded chars: ");
foreach (Char c in chars) {
Console.Write("[{0}]", c);
}
Console.WriteLine();
}
}
Imports System.Text
Class UTF8EncodingExample
Public Shared Sub Main()
Dim chars() As Char
Dim bytes() As Byte = {99, 204, 128, 234, 130, 160}
Dim utf8Decoder As Decoder = Encoding.UTF8.GetDecoder()
Dim charCount As Integer = utf8Decoder.GetCharCount(bytes, 0, bytes.Length)
chars = New Char(charCount - 1) {}
Dim charsDecodedCount As Integer = utf8Decoder.GetChars( _
bytes, 0, bytes.Length, chars, 0 _
)
Console.WriteLine("{0} characters used to decode bytes.", charsDecodedCount)
Console.Write("Decoded chars: ")
Dim c As Char
For Each c In chars
Console.Write("[{0}]", c)
Next c
Console.WriteLine()
End Sub
End Class
Commenti
Il Decoder.GetChars metodo converte blocchi sequenziali di byte in blocchi sequenziali di caratteri, in modo analogo al GetChars metodo di questa classe. Tuttavia, un oggetto Decoder mantiene le informazioni sullo stato tra le chiamate in modo che possa decodificare correttamente le sequenze di byte che si estendono su blocchi. DecoderConserva inoltre i byte finali alla fine dei blocchi di dati e usa i byte finali nella successiva operazione di decodifica. Pertanto, GetDecoder e GetEncoder sono utili per le operazioni di trasmissione e file di rete, perché tali operazioni spesso gestiscono blocchi di dati anziché un flusso di dati completo.
Se il rilevamento degli errori è abilitato, ovvero il throwOnInvalidCharacters
parametro del costruttore è impostato su true
, il rilevamento degli errori viene abilitato anche nell'oggetto Decoder restituito da questo metodo. Se il rilevamento degli errori è abilitato e viene rilevata una sequenza non valida, lo stato del decodificatore non è definito e l'elaborazione deve essere arrestata.