次の方法で共有


UnicodeEncoding.GetDecoder メソッド

UTF-16 でエンコードされたバイトのシーケンスを文字のシーケンスに変換できるデコーダを取得します。

Overrides Public Function GetDecoder() As Decoder
[C#]
public override Decoder GetDecoder();
[C++]
public: Decoder* GetDecoder();
[JScript]
public override function GetDecoder() : Decoder;

戻り値

Decoder

解説

Decoder.GetChars メソッドは、 GetChars メソッドと同様の方法で、隣接するバイト ブロックを隣接する文字ブロックに変換します。ただし、 Decoder では、ブロックにまたがるバイト シーケンスを正確にデコードできるように、呼び出し間のステータス情報を維持します。

使用例

[Visual Basic, C#, C++] GetDecoder メソッドを使用して Unicode デコーダを取得する方法を次の例に示します。デコーダは、 bytes 内のエンコードされたバイトのシーケンスを chars 内の文字のシーケンスに変換するときに使用します。

 
Imports System
Imports System.Text

Class UnicodeEncodingExample
    
    Public Shared Sub Main()
        Dim chars() As Char
        Dim bytes() As Byte = {85, 0, 110, 0, 105, 0, 99, 0, 111, 0, 100, 0, 101, 0}
        
        Dim unicodeDecoder As Decoder = Encoding.Unicode.GetDecoder()
        
        Dim charCount As Integer = unicodeDecoder.GetCharCount(bytes, 2, 8)
        chars = New Char(charCount - 1) {}
        Dim charsDecodedCount As Integer = unicodeDecoder.GetChars(bytes, 2, 8, 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 'UnicodeEncodingExample

[C#] 
using System;
using System.Text;

class UnicodeEncodingExample {
    public static void Main() {
        Char[] chars;
        Byte[] bytes = new Byte[] {
            85, 0, 110, 0, 105, 0, 99, 0, 111, 0, 100, 0, 101, 0
        };

        Decoder unicodeDecoder = Encoding.Unicode.GetDecoder();

        int charCount = unicodeDecoder.GetCharCount(bytes, 2, 8);
        chars = new Char[charCount];
        int charsDecodedCount = unicodeDecoder.GetChars(bytes, 2, 8, 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();
    }
}

[C++] 
#using <mscorlib.dll>
using namespace System;
using namespace System::Text;
using namespace System::Collections;

int main()
{
   Char chars[];
   Byte bytes[] =
   {
      85, 0, 110, 0, 105, 0, 99, 0, 111, 0, 100, 0, 101, 0
   };

   Decoder * unicodeDecoder = Encoding::Unicode -> GetDecoder();

   int charCount = unicodeDecoder -> GetCharCount(bytes, 2, 8);
   chars = new Char[charCount];
   int charsDecodedCount = unicodeDecoder -> GetChars(bytes, 2, 8, chars, 0);

   Console::WriteLine(S"{0} characters used to decode bytes.", __box(charsDecodedCount));

   Console::Write(S"Decoded chars: ");
   IEnumerator* myEnum = chars->GetEnumerator();
   while (myEnum->MoveNext())
   {
      Char* c = __try_cast<Char*>(myEnum->Current);
      Console::Write(S"[{0}]", c -> ToString());
   }
   Console::WriteLine();
}

[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ, .NET Compact Framework - Windows CE .NET, Common Language Infrastructure (CLI) Standard

参照

UnicodeEncoding クラス | UnicodeEncoding メンバ | System.Text 名前空間 | GetCharCount | GetChars