UTF8Encoding.GetDecoder Méthode
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Obtient un décodeur qui convertit une séquence d'octets encodée en UTF-8 en une séquence de caractères 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
Retours
Décodeur qui convertit une séquence d'octets encodée en UTF-8 en une séquence de caractères Unicode.
Exemples
L’exemple suivant utilise la GetDecoder méthode pour obtenir un décodeur UTF-8. Le décodeur convertit une séquence d’octets en une séquence de caractères.
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
Remarques
La Decoder.GetChars méthode convertit des blocs d’octets séquentiels en blocs de caractères séquentiels, d’une manière similaire à la GetChars méthode de cette classe. Toutefois, un Decoder contrôle des informations d’état entre les appels permet de décoder correctement les séquences d’octets qui s’étendent sur des blocs. Le Decoder conserve également les octets de fin à la fin des blocs de données et utilise les octets de fin lors de l’opération de décodage suivante. Par conséquent, GetDecoder et GetEncoder sont utiles pour la transmission réseau et les opérations de fichier, car ces opérations traitent souvent des blocs de données au lieu d’un flux de données complet.
Si la détection d’erreur est activée, autrement dit, le throwOnInvalidCharacters
paramètre du constructeur est défini true
sur , la détection d’erreur est également activée dans le Decoder retour de cette méthode. Si la détection d’erreur est activée et qu’une séquence non valide est rencontrée, l’état du décodeur n’est pas défini et le traitement doit s’arrêter.