UTF8Encoding.GetDecoder Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
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
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.