Sdílet prostřednictvím


UTF8Encoding.GetDecoder Metoda

Definice

Získá dekodér, který převede UTF-8 zakódovanou sekvenci bajtů na sekvenci znaků 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

Návraty

Decoder

Dekodér, který převede sekvenci bajtů zakódovanou kódováním UTF-8 na posloupnost znaků Unicode.

Příklady

Následující příklad používá metodu GetDecoder k získání dekodéru UTF-8. Dekodér převede posloupnost bajtů na posloupnost znaků.

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

Poznámky

Metoda Decoder.GetChars převádí sekvenční bloky bajtů na sekvenční bloky znaků způsobem podobným GetChars metodě této třídy. Udržuje však informace o stavu mezi voláními, Decoder aby bylo možné správně dekódovat sekvence bajtů, které pokrývají bloky. Zachovává Decoder také koncové bajty na konci datových bloků a používá koncové bajty v další dekódovací operaci. Proto jsou užitečné pro GetEncoder síťové přenosy a operace se soubory, GetDecoder protože tyto operace často zpracovávají bloky dat místo kompletního datového proudu.

Pokud je povolena detekce chyb, to znamená, throwOnInvalidCharacters že parametr konstruktoru je nastaven na true, detekce chyb je také povolena ve Decoder vrácených touto metodou. Pokud je povolena detekce chyb a dojde k neplatné sekvenci, stav dekodéru není definován a zpracování musí zastavit.

Platí pro

Viz také