UTF8Encoding.GetDecoder UTF8Encoding.GetDecoder UTF8Encoding.GetDecoder UTF8Encoding.GetDecoder Method

定義

UTF-8 でエンコードされたバイト シーケンスを Unicode 文字のシーケンスに変換するデコーダーを取得します。Obtains a decoder that converts a UTF-8 encoded sequence of bytes into a sequence of Unicode characters.

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

戻り値

UTF-8 でエンコードされたバイト シーケンスを Unicode 文字のシーケンスに変換するデコーダー。A decoder that converts a UTF-8 encoded sequence of bytes into a sequence of Unicode characters.

次の例ではGetDecoder 、メソッドを使用して、utf-8 デコーダーを取得します。The following example uses the GetDecoder method to obtain a UTF-8 decoder. デコーダーは、バイトシーケンスを文字シーケンスに変換します。The decoder converts a sequence of bytes into a sequence of characters.

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

注釈

メソッドDecoder.GetCharsは、このクラスのGetCharsメソッドと同様の方法で、バイトのシーケンシャルブロックを文字の連続するブロックに変換します。The Decoder.GetChars method converts sequential blocks of bytes into sequential blocks of characters, in a manner similar to the GetChars method of this class. ただし、はDecoder 、複数のブロックにまたがるバイトシーケンスを正しくデコードできるように、呼び出し間で状態情報を保持します。However, a Decoder maintains state information between calls so it can correctly decode byte sequences that span blocks. またDecoder 、は、データブロックの末尾で末尾のバイトを保持し、次のデコード操作で末尾のバイトを使用します。The Decoder also preserves trailing bytes at the end of data blocks and uses the trailing bytes in the next decoding operation. そのためGetDecoderGetEncoderとは、ネットワークの転送およびファイル操作に役立ちます。これらの操作は、多くの場合、完全なデータストリームではなく、データのブロックを処理するためです。Therefore, GetDecoder and GetEncoder are useful for network transmission and file operations, because those operations often deal with blocks of data instead of a complete data stream.

エラー検出が有効になっている場合 ( throwOnInvalidCharactersつまり、コンストラクターのパラメーターがにtrue設定されている場合)、 Decoderこのメソッドによって返されるでもエラー検出が有効になります。If error detection is enabled, that is, the throwOnInvalidCharacters parameter of the constructor is set to true, error detection is also enabled in the Decoder returned by this method. エラー検出が有効になっていて、無効なシーケンスが検出された場合、デコーダーの状態は未定義となり、処理を停止する必要があります。If error detection is enabled and an invalid sequence is encountered, the state of the decoder is undefined and processing must stop.

適用対象

こちらもご覧ください