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

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

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

次の例は、GetEncoder メソッドを使用して、文字シーケンスを UTF-8 でエンコードされたバイト シーケンスに変換するエンコーダを取得する方法を示しています。
Imports System Imports System.Text Imports Microsoft.VisualBasic.Strings Class UTF8EncodingExample Public Shared Sub Main() 'Characters: ' ChrW(97) = a ' ChrW(98) = b ' ChrW(99) = c ' ChrW(768) = ` ' ChrW(41120) = valid unicode code point, but not a character Dim chars() As Char = {ChrW(97), ChrW(98), ChrW(99), ChrW(768), ChrW(41120)} Dim bytes() As Byte Dim utf8Encoder As Encoder = Encoding.UTF8.GetEncoder() Dim byteCount As Integer = utf8Encoder.GetByteCount(chars, 2, 3, True) bytes = New Byte(byteCount - 1) {} Dim bytesEncodedCount As Integer = utf8Encoder.GetBytes( _ chars, 2, 3, bytes, 0, True _ ) Console.WriteLine("{0} bytes used to encode characters.", bytesEncodedCount) Console.Write("Encoded bytes: ") Dim b As Byte For Each b In bytes Console.Write("[{0}]", b) Next b Console.WriteLine() End Sub 'Main End Class 'UTF8EncodingExample
using System; using System.Text; class UTF8EncodingExample { public static void Main() { Char[] chars = new Char[] {'a', 'b', 'c', '\u0300', '\ua0a0'}; Byte[] bytes; Encoder utf8Encoder = Encoding.UTF8.GetEncoder(); int byteCount = utf8Encoder.GetByteCount(chars, 2, 3, true); bytes = new Byte[byteCount]; int bytesEncodedCount = utf8Encoder.GetBytes(chars, 2, 3, bytes, 0, true); Console.WriteLine( "{0} bytes used to encode characters.", bytesEncodedCount ); Console.Write("Encoded bytes: "); foreach (Byte b in bytes) { Console.Write("[{0}]", b); } Console.WriteLine(); } }
using namespace System; using namespace System::Text; using namespace System::Collections; int main() { array<Char>^chars = {'a','b','c',L'\u0300',L'\ua0a0'}; array<Byte>^bytes; Encoder^ utf8Encoder = Encoding::UTF8->GetEncoder(); int byteCount = utf8Encoder->GetByteCount( chars, 2, 3, true ); bytes = gcnew array<Byte>(byteCount); int bytesEncodedCount = utf8Encoder->GetBytes( chars, 2, 3, bytes, 0, true ); Console::WriteLine( "{0} bytes used to encode characters.", bytesEncodedCount ); Console::Write( "Encoded bytes: " ); IEnumerator^ myEnum = bytes->GetEnumerator(); while ( myEnum->MoveNext() ) { Byte b = safe_cast<Byte>(myEnum->Current); Console::Write( "[{0}]", b ); } Console::WriteLine(); }
import System.*; import System.Text.*; class UTF8EncodingExample { public static void main(String[] args) { char chars[] = new char[] { 'a', 'b', 'c', '\u0300', '\ua0a0' }; ubyte bytes[]; Encoder utf8Encoder = Encoding.get_UTF8().GetEncoder(); int byteCount = utf8Encoder.GetByteCount(chars, 2, 3, true); bytes = new ubyte[byteCount]; int bytesEncodedCount = utf8Encoder.GetBytes(chars, 2, 3, bytes, 0, true); Console.WriteLine("{0} bytes used to encode characters.", String.valueOf(bytesEncodedCount)); Console.Write("Encoded bytes: "); for (int iCtr = 0; iCtr < bytes.length; iCtr++) { ubyte b = bytes[iCtr]; Console.Write("[{0}]", String.valueOf(b)); } Console.WriteLine(); } //main } //UTF8EncodingExample

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


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