UTF8Encoding.GetEncoder メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
Unicode 文字のシーケンスを UTF-8 でエンコードされたバイト シーケンスに変換するエンコーダーを取得します。
public:
override System::Text::Encoder ^ GetEncoder();
public override System.Text.Encoder GetEncoder ();
override this.GetEncoder : unit -> System.Text.Encoder
Public Overrides Function GetEncoder () As Encoder
戻り値
Unicode 文字のシーケンスを UTF-8 でエンコードされたバイト シーケンスに変換する Encoder。
例
次の例では、 メソッドを GetEncoder 使用してエンコーダーを取得し、一連の文字を UTF-8 でエンコードされたバイト シーケンスに変換します。
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();
}
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();
}
}
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
End Class
注釈
メソッドは Encoder.GetBytes 、 メソッドと同様の方法で、文字のシーケンシャル ブロックをバイトのシーケンシャル ブロックに GetBytes 変換します。 ただし、 は Encoder 、ブロックにまたがる文字シーケンスを正しくエンコードできるように、呼び出し間の状態情報を保持します。 また、は Encoder データブロックの末尾で末尾の文字を保持し、次のエンコーディング操作で末尾の文字を使用します。 たとえば、データブロックの末尾が一致していない上位サロゲートで、一致する下位サロゲートが次のデータブロックに含まれている可能性があります。 そのため、 GetDecoder と GetEncoder は、ネットワークの転送およびファイル操作に役立ちます。これらの操作は、多くの場合、完全なデータストリームではなく、データのブロックを処理するためです。
エラー検出が有効になっている場合、つまり、 throwOnInvalidCharacters
コンストラクターのパラメーターが に true
設定されている場合、このメソッドによって返される でも Encoder エラー検出が有効になります。 エラー検出が有効で、無効なシーケンスが検出された場合、エンコーダーの状態は未定義であり、処理を停止する必要があります。
適用対象
こちらもご覧ください
.NET