Freigeben über


UTF8Encoding.GetDecoder-Methode

Ruft einen Decoder ab, der eine UTF-8-codierte Bytefolge in eine Unicode-Zeichenfolge konvertiert.

Namespace: System.Text
Assembly: mscorlib (in mscorlib.dll)

Syntax

'Declaration
Public Overrides Function GetDecoder As Decoder
'Usage
Dim instance As UTF8Encoding
Dim returnValue As Decoder

returnValue = instance.GetDecoder
public override Decoder GetDecoder ()
public:
virtual Decoder^ GetDecoder () override
public Decoder GetDecoder ()
public override function GetDecoder () : Decoder

Rückgabewert

Ein Decoder, der eine UTF-8-codierte Bytefolge in eine Unicode-Zeichenfolge konvertiert.

Hinweise

Ähnlich wie die GetChars-Methode dieser Klasse konvertiert die Decoder.GetChars-Methode Blöcke von Bytefolgen in Blöcke von Zeichenfolgen. Ein Decoder behält jedoch die Zustandsinformationen zwischen Aufrufen bei, damit Blöcke umfassende Bytefolgen korrekt decodiert werden können. Der Decoder behält nachfolgende Bytes am Ende von Datenblöcken bei und verwendet sie im nächsten Decodierungsvorgang. Deshalb empfehlen sich GetDecoder und GetEncoder für Netzwerkübertragungs- und Dateivorgänge, da bei diesen Vorgängen oft Datenblöcke und keine vollständigen Datenstreams verwendet werden.

Wenn die Fehlererkennung in dieser Instanz aktiviert ist (d. h, der throwOnInvalidCharacters-Parameter des Konstruktors wurde auf true festgelegt), wird die Fehlererkennung auch im Decoder aktiviert, der von dieser Methode zurückgegeben wird. Wenn die Fehlererkennung aktiviert ist und eine ungültige Folge gefunden wird, ist der Zustand des Decoders nicht definiert, und daher muss die Verarbeitung beendet werden.

Beispiel

Das folgende Beispiel veranschaulicht, wie mit der GetDecoder-Methode ein UTF-8-Decoder abgerufen wird. Der Decoder konvertiert eine Bytefolge in eine Folge von Zeichen.

Imports System
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 'Main
End Class 'UTF8EncodingExample
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();
    }
}
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();
}
import System .* ;
import System.Text .* ;

class UTF8EncodingExample
{
    public static void main(String[] args)
    {
        char chars[];
        ubyte bytes[] = new ubyte[] { 99, 204, 128, 234, 130, 160 };
        Decoder utf8Decoder = Encoding.get_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.",
            String.valueOf(charsDecodedCount));
        Console.Write("Decoded chars: ");
        for (int iCtr = 0; iCtr < chars.length; iCtr++) {
            char c = chars[iCtr];
            Console.Write("[{0}]", String.valueOf(c));
        }
        Console.WriteLine();
    } //main
} //UTF8EncodingExample

Plattformen

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile für Pocket PC, Windows Mobile für Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.

Versionsinformationen

.NET Framework

Unterstützt in: 2.0, 1.1, 1.0

.NET Compact Framework

Unterstützt in: 2.0, 1.0

Siehe auch

Referenz

UTF8Encoding-Klasse
UTF8Encoding-Member
System.Text-Namespace
Decoder-Klasse
GetChars
GetString
GetCharCount
GetEncoder