CharsetDecoder.Decode メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
オーバーロード
| 名前 | 説明 |
|---|---|
| Decode(ByteBuffer) |
1 つの入力バイト バッファーの残りのコンテンツを新しく割り当てられた文字バッファーにデコードする便利なメソッド。 |
| Decode(ByteBuffer, CharBuffer, Boolean) |
指定された入力バッファーから可能な限り多くのバイトをデコードし、指定された出力バッファーに結果を書き込みます。 |
Decode(ByteBuffer)
1 つの入力バイト バッファーの残りのコンテンツを新しく割り当てられた文字バッファーにデコードする便利なメソッド。
[Android.Runtime.Register("decode", "(Ljava/nio/ByteBuffer;)Ljava/nio/CharBuffer;", "")]
public Java.Nio.CharBuffer? Decode(Java.Nio.ByteBuffer? in);
[<Android.Runtime.Register("decode", "(Ljava/nio/ByteBuffer;)Ljava/nio/CharBuffer;", "")>]
member this.Decode : Java.Nio.ByteBuffer -> Java.Nio.CharBuffer
パラメーター
- in
- ByteBuffer
入力バイト バッファー
返品
デコード操作の結果を含む、新しく割り当てられた文字バッファー。 バッファーの位置は 0 になり、その制限は書き込まれた最後の文字に従います。
- 属性
例外
別のデコード操作が進行中の場合は 。
この文字セットに対して無効な入力バイト シーケンスが検出され、不正な形式のエラーのアクションが Report
この文字セットの有効な入力バイト シーケンスが検出され、マップできない文字エラーのアクションが Report場合。 [マップ不可] は、入力バッファーの現在位置にあるバイト シーケンスを Unicode 文字シーケンスにマップできないことを意味します。
デコード操作中に別の例外が発生した場合。
注釈
1 つの入力バイト バッファーの残りのコンテンツを新しく割り当てられた文字バッファーにデコードする便利なメソッド。
このメソッドは、デコード操作全体を実装します。つまり、このデコーダーをリセットし、指定されたバイト バッファー内のバイトをデコードし、最後にこのデコーダーをフラッシュします。 そのため、デコード操作が既に進行中の場合は、このメソッドを呼び出さないでください。
このページの一部は、によって作成および共有され、に記載されている条件に従って使用される作業に基づく変更です。
適用対象
Decode(ByteBuffer, CharBuffer, Boolean)
指定された入力バッファーから可能な限り多くのバイトをデコードし、指定された出力バッファーに結果を書き込みます。
[Android.Runtime.Register("decode", "(Ljava/nio/ByteBuffer;Ljava/nio/CharBuffer;Z)Ljava/nio/charset/CoderResult;", "")]
public Java.Nio.Charset.CoderResult? Decode(Java.Nio.ByteBuffer? in, Java.Nio.CharBuffer? out, bool endOfInput);
[<Android.Runtime.Register("decode", "(Ljava/nio/ByteBuffer;Ljava/nio/CharBuffer;Z)Ljava/nio/charset/CoderResult;", "")>]
member this.Decode : Java.Nio.ByteBuffer * Java.Nio.CharBuffer * bool -> Java.Nio.Charset.CoderResult
パラメーター
- in
- ByteBuffer
入力バイト バッファー
- out
- CharBuffer
出力文字バッファー
- endOfInput
- Boolean
true 呼び出し側が、指定されたバッファー内の入力バイトを超えて追加の入力バイトを提供できない場合にのみ
返品
終了の理由を記述するコーダー結果オブジェクト
- 属性
例外
デコードが開始された場合、またはこのデコードの進行状況でこれ以上入力が必要ない場合。
DecodeLoop(ByteBuffer, CharBuffer)メソッドがBufferUnderflowExceptionまたはBufferOverflowExceptionをスローした場合。
注釈
指定された入力バッファーから可能な限り多くのバイトをデコードし、指定された出力バッファーに結果を書き込みます。
バッファーは、現在の位置から読み取られ、書き込まれます。 最大 Buffer#remaining in.remaining() バイトが読み取られ、最大 Buffer#remaining out.remaining() 文字が書き込まれます。 バッファーの位置は、読み取られたバイト数と書き込まれた文字を反映するように進められますが、それらのマークと制限は変更されません。
このメソッドは、入力バッファーからバイトを読み取り、出力バッファーに文字を書き込むだけでなく、 CoderResult オブジェクトを返して終了の理由を説明します。
<ul>
<li>
CoderResult#UNDERFLOW は、可能な限り多くの入力バッファーがデコードされたことを示します。 それ以上入力がない場合、呼び出し側はデコード操作の次の手順に進むことができます。 それ以外の場合は、このメソッドをさらに入力して再度呼び出す必要があります。
</li>
<li>
CoderResult#OVERFLOW は、それ以上バイトをデコードするための領域が出力バッファーに不足していることを示します。 このメソッドは、バッファー#残りの文字が多い出力バッファーを使用して再度呼び出す必要があります。 これは通常、デコードされた文字を出力バッファーからドレインすることによって行われます。
</li>
<li>
CoderResult#malwareedForLength の形式が正しくない入力結果は、不正な入力エラーが検出されたことを示します。 形式が正しくないバイトは、入力バッファーの (インクリメントされる可能性がある) 位置から始まります。結果オブジェクトの CoderResult#length() length メソッドを呼び出すことによって、形式が正しくないバイト数が決まる場合があります。 このケースは、このデコーダーの #onMalformedInput 形式が正しくないアクションが CodingErrorAction#REPORTされている場合にのみ適用されます。それ以外の場合は、要求に応じて無効な入力が無視または置換されます。
</li>
<li>
CoderResult#unmappableForLength unmappable-character の結果は、マップできない文字エラーが検出されたことを示します。 マップできない文字をデコードするバイトは、入力バッファーの (インクリメントされる可能性がある) 位置から始まります。このようなバイト数は、結果オブジェクトの CoderResult#length() length メソッドを呼び出すことによって決定できます。 このケースは、このデコーダーの #onUnmappableCharacter 適用できないアクションが CodingErrorAction#REPORTされている場合にのみ適用されます。それ以外の場合は、要求に応じて、適用できない文字は無視または置換されます。
</li>
</ul>
いずれの場合も、同じデコード操作でこのメソッドを再び取り込む場合は、次の呼び出しで使用できるように、入力バッファーに残っているバイトを保持するように注意する必要があります。
endOfInput パラメーターは、呼び出し側が指定された入力バッファーに含まれるそれ以上の入力を提供できるかどうかを、このメソッドに推奨します。 追加の入力を提供する可能性がある場合、呼び出し側はこのパラメーターに対して false を渡す必要があります。さらに入力を指定できない場合は、呼び出し側は trueを渡す必要があります。 これは間違っていません。実際には、1 回の呼び出しで false を渡し、後でそれ以上の入力が実際に使用できなかったことを発見することは非常に一般的です。 ただし、一連の呼び出しでこのメソッドの最終的な呼び出しは常に true 渡されるため、残りのアンコーディングされた入力は形式が正しくないものとして扱われます。
このメソッドは、 #decodeLoop decodeLoop メソッドを呼び出し、その結果を解釈し、エラー状態を処理し、必要に応じて再び取り込むことで機能します。
このページの一部は、によって作成および共有され、に記載されている条件に従って使用される作業に基づく変更です。