UnicodeEncoding.GetEncoder メソッド
アセンブリ: mscorlib (mscorlib.dll 内)

Dim instance As UnicodeEncoding Dim returnValue As Encoder returnValue = instance.GetEncoder
Unicode 文字のシーケンスを UTF-32 でエンコードされたバイト シーケンスに変換する Encoder オブジェクト。

Encoder.GetBytes メソッドは、このクラスの GetBytes メソッドと同様の方法で、連続する文字ブロックを連続するバイト ブロックに変換します。ただし、Encoder オブジェクトでは、複数のブロックにまたがる文字シーケンスを正確にエンコードできるように、呼び出し間でステータス情報を維持します。また、Encoder オブジェクトは、データ ブロックの末尾で後続文字を保持し、その後続文字を次のエンコード操作に使用します。たとえば、データ ブロックが上位サロゲートで終了し、対応する下位サロゲートが次のデータ ブロックに含まれる場合があります。したがって、GetDecoder と GetEncoder は、ネットワーク伝送やファイル操作に役立ちます。これは、ネットワーク伝送やファイル操作では、完全なデータ ストリームではなくデータのブロックを処理することが多いためです。
このインスタンスでエラー検出が有効になっている場合、つまり、コンストラクタの throwOnInvalidBytes パラメータが true に設定された場合は、このメソッドによって返される Encoder オブジェクト内でもエラー検出が有効です。エラー検出を有効にしている場合に無効なシーケンスが検出されると、エンコーダの状態が定義されていないため、処理は中止されます。

次のコード例は、エンコーダとデコーダを使用して、文字列をバイト配列にエンコードし、そのバイトを文字配列にデコードします。
Imports System Imports System.Text Imports Microsoft.VisualBasic Public Class SamplesUnicodeEncoding Public Shared Sub Main() ' Get an encoder and a decoder from UnicodeEncoding. Dim u16 As New UnicodeEncoding(False, True, True) Dim myEnc As Encoder = u16.GetEncoder() Dim myDec As Decoder = u16.GetDecoder() ' The characters to encode: ' Latin Small Letter Z (U+007A) ' Latin Small Letter A (U+0061) ' Combining Breve (U+0306) ' Latin Small Letter AE With Acute (U+01FD) ' Greek Small Letter Beta (U+03B2) Dim myChars() As Char = {"z"c, "a"c, ChrW(&H0306), ChrW(&H01FD), ChrW(&H03B2)} Console.Write("The original characters : ") Console.WriteLine(myChars) ' Encode the character array. Dim iBC As Integer = myEnc.GetByteCount(myChars, 0, myChars.Length, True) ' NOTE: In Visual Basic, arrays contain one extra element by default. ' The following line creates an array with the exact number of elements required. Dim myBytes(iBC - 1) As Byte myEnc.GetBytes(myChars, 0, myChars.Length, myBytes, 0, True) ' Print the resulting bytes. Console.Write("Using the encoder : ") Dim i As Integer For i = 0 To myBytes.Length - 1 Console.Write("{0:X2} ", myBytes(i)) Next i Console.WriteLine() ' Decode the byte array back into an array of characters. Dim iCC As Integer = myDec.GetCharCount(myBytes, 0, myBytes.Length, True) ' NOTE: In Visual Basic, arrays contain one extra element by default. ' The following line creates an array with the exact number of elements required. Dim myDecodedChars(iCC - 1) As Char myDec.GetChars(myBytes, 0, myBytes.Length, myDecodedChars, 0, True) ' Print the resulting characters. Console.Write("Using the decoder : ") Console.WriteLine(myDecodedChars) End Sub 'Main End Class 'SamplesUnicodeEncoding 'This code produces the following output. The question marks take the place of characters that cannot be displayed at the console. ' 'The original characters : za??ß 'Using the encoder : 7A 00 61 00 06 03 FD 01 B2 03 'Using the decoder : za??ß
using System; using System.Text; public class SamplesUnicodeEncoding { public static void Main() { // Get an encoder and a decoder from UnicodeEncoding. UnicodeEncoding u16 = new UnicodeEncoding( false, true, true ); Encoder myEnc = u16.GetEncoder(); Decoder myDec = u16.GetDecoder(); // The characters to encode: // Latin Small Letter Z (U+007A) // Latin Small Letter A (U+0061) // Combining Breve (U+0306) // Latin Small Letter AE With Acute (U+01FD) // Greek Small Letter Beta (U+03B2) char[] myChars = new char[5] { 'z', 'a', '\u0306', '\u01FD', '\u03B2' }; Console.Write( "The original characters : " ); Console.WriteLine( myChars ); // Encode the character array. int iBC = myEnc.GetByteCount( myChars, 0, myChars.Length, true ); byte[] myBytes = new byte[iBC]; myEnc.GetBytes( myChars, 0, myChars.Length, myBytes, 0, true ); // Print the resulting bytes. Console.Write( "Using the encoder : " ); for ( int i = 0; i < myBytes.Length; i++ ) Console.Write( "{0:X2} ", myBytes[i] ); Console.WriteLine(); // Decode the byte array back into an array of characters. int iCC = myDec.GetCharCount( myBytes, 0, myBytes.Length, true ); char[] myDecodedChars = new char[iCC]; myDec.GetChars( myBytes, 0, myBytes.Length, myDecodedChars, 0, true ); // Print the resulting characters. Console.Write( "Using the decoder : " ); Console.WriteLine( myDecodedChars ); } } /* This code produces the following output. The question marks take the place of characters that cannot be displayed at the console. The original characters : za?? Using the encoder : 7A 00 61 00 06 03 FD 01 B2 03 Using the decoder : za?? */
using namespace System; using namespace System::Text; int main() { // Get an encoder and a decoder from UnicodeEncoding. UnicodeEncoding^ u16 = gcnew UnicodeEncoding( false,true,true ); Encoder^ myEnc = u16->GetEncoder(); Decoder^ myDec = u16->GetDecoder(); // The characters to encode: // Latin Small Letter Z (U+007A) // Latin Small Letter A (U+0061) // Combining Breve (U+0306) // Latin Small Letter AE With Acute (U+01FD) // Greek Small Letter Beta (U+03B2) array<Char>^myChars = gcnew array<Char>(5){ L'z',L'a',L'\u0306',L'\u01FD',L'\u03B2' }; Console::Write( "The original characters : " ); Console::WriteLine( myChars ); // Encode the character array. int iBC = myEnc->GetByteCount( myChars, 0, myChars->Length, true ); array<Byte>^myBytes = gcnew array<Byte>(iBC); myEnc->GetBytes( myChars, 0, myChars->Length, myBytes, 0, true ); // Print the resulting bytes. Console::Write( "Using the encoder : " ); for ( int i = 0; i < myBytes->Length; i++ ) Console::Write( "{0:X2} ", myBytes[ i ] ); Console::WriteLine(); // Decode the byte array back into an array of characters. int iCC = myDec->GetCharCount( myBytes, 0, myBytes->Length, true ); array<Char>^myDecodedChars = gcnew array<Char>(iCC); myDec->GetChars( myBytes, 0, myBytes->Length, myDecodedChars, 0, true ); // Print the resulting characters. Console::Write( "Using the decoder : " ); Console::WriteLine( myDecodedChars ); } /* This code produces the following output. The question marks take the place of characters that cannot be displayed at the console. The original characters : za?? Using the encoder : 7A 00 61 00 06 03 FD 01 B2 03 Using the decoder : za?? */
import System.*; import System.Text.*; public class SamplesUnicodeEncoding { public static void main(String[] args) { // Get an encoder and a decoder from UnicodeEncoding. UnicodeEncoding u16 = new UnicodeEncoding(false, true, true); Encoder myEnc = u16.GetEncoder(); Decoder myDec = u16.GetDecoder(); // The characters to encode: // Latin Small Letter Z (U+007A) // Latin Small Letter A (U+0061) // Combining Breve (U+0306) // Latin Small Letter AE With Acute (U+01FD) // Greek Small Letter Beta (U+03B2) char myChars[] = new char[] { 'z', 'a', '\u0306', '\u01FD', '\u03B2' }; Console.Write("The original characters : "); Console.WriteLine(myChars); // Encode the character array. int iBC = myEnc.GetByteCount(myChars, 0, myChars.length, true); ubyte myBytes[] = new ubyte[iBC]; myEnc.GetBytes(myChars, 0, myChars.length, myBytes, 0, true); // Print the resulting bytes. Console.Write("Using the encoder : "); for(int i = 0; i < myBytes.length; i++) { Console.Write("{0:X2} ", ((System.Byte)myBytes[i]).ToString("X2")); } Console.WriteLine(); // Decode the byte array back into an array of characters. int iCC = myDec.GetCharCount(myBytes, 0, myBytes.length, true); char myDecodedChars[] = new char[iCC]; myDec.GetChars(myBytes, 0, myBytes.length, myDecodedChars, 0, true); // Print the resulting characters. Console.Write("Using the decoder : "); Console.WriteLine(myDecodedChars); } //main } //SamplesUnicodeEncoding /* This code produces the following output. The question marks take the place of characters that cannot be displayed at the console. The original characters : za?? Using the encoder : 7A 00 61 00 06 03 FD 01 B2 03 Using the decoder : za?? */

Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


- UnicodeEncoding.GetEncoder メソッドのページへのリンク