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