CharsetEncoder.Encode 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
多載
| 名稱 | Description |
|---|---|
| Encode(CharBuffer) |
將單一輸入字元緩衝區的其餘內容編碼為新配置的位元組緩衝區的便利方法。 |
| Encode(CharBuffer, ByteBuffer, Boolean) |
從指定的輸入緩衝區編碼任意數目的字元,並將結果寫入指定的輸出緩衝區。 |
Encode(CharBuffer)
將單一輸入字元緩衝區的其餘內容編碼為新配置的位元組緩衝區的便利方法。
[Android.Runtime.Register("encode", "(Ljava/nio/CharBuffer;)Ljava/nio/ByteBuffer;", "")]
public Java.Nio.ByteBuffer? Encode(Java.Nio.CharBuffer? in);
[<Android.Runtime.Register("encode", "(Ljava/nio/CharBuffer;)Ljava/nio/ByteBuffer;", "")>]
member this.Encode : Java.Nio.CharBuffer -> Java.Nio.ByteBuffer
參數
- in
- CharBuffer
輸入字元緩衝區
傳回
包含編碼作業結果的新配置位元組緩衝區。 緩衝區的位置會是零,而且其限制會跟在寫入的最後一個字節之後。
- 屬性
例外狀況
如果正在進行另一個編碼作業,則為 。
如果遇到這個字元集的不合法輸入字元序列,且格式錯誤的動作為 Report
如果遇到這個字元集的合法但無法套用的輸入字元序列,且無法套用字元錯誤的動作為 Report。 無法套用表示輸入緩衝區目前位置上的 Unicode 字元序列無法對應至對等的位元組序列。
如果在編碼作業期間發生其他例外狀況,則為 。
備註
將單一輸入字元緩衝區的其餘內容編碼為新配置的位元組緩衝區的便利方法。
這個方法會實作整個編碼作業;也就是說,它會重設此編碼器,然後將指定字元緩衝區中的字元編碼,最後會排清此編碼器。 因此,如果編碼作業正在進行中,就不應該叫用這個方法。
的 java.nio.charset.CharsetEncoder.encode(java.nio.CharBuffer)Java 檔。
此頁面的部分是根據 Android 開放原始碼專案所建立和共用的工作進行修改,並根據 Creative Commons 2.5 屬性授權中所述的詞彙使用。
適用於
Encode(CharBuffer, ByteBuffer, Boolean)
從指定的輸入緩衝區編碼任意數目的字元,並將結果寫入指定的輸出緩衝區。
[Android.Runtime.Register("encode", "(Ljava/nio/CharBuffer;Ljava/nio/ByteBuffer;Z)Ljava/nio/charset/CoderResult;", "")]
public Java.Nio.Charset.CoderResult? Encode(Java.Nio.CharBuffer? in, Java.Nio.ByteBuffer? out, bool endOfInput);
[<Android.Runtime.Register("encode", "(Ljava/nio/CharBuffer;Ljava/nio/ByteBuffer;Z)Ljava/nio/charset/CoderResult;", "")>]
member this.Encode : Java.Nio.CharBuffer * Java.Nio.ByteBuffer * bool -> Java.Nio.Charset.CoderResult
參數
- in
- CharBuffer
輸入字元緩衝區
- out
- ByteBuffer
輸出位元組緩衝區
- endOfInput
- Boolean
true 如果,而且只有在唯一的情況下,叫用者才能提供超出指定緩衝區中之輸入字元的額外輸入字元
傳回
描述終止原因的 Coder-result 物件
- 屬性
例外狀況
如果編碼作業已經啟動,或在此編碼程式中不需要再輸入,則為 。
EncodeLoop(CharBuffer, ByteBuffer)如果方法擲回 BufferUnderflowException 或 BufferUnderflowException。
備註
從指定的輸入緩衝區編碼任意數目的字元,並將結果寫入指定的輸出緩衝區。
緩衝區會從目前的位置開始讀取和寫入。 最多 Buffer#remaining in.remaining() 會讀取字元,而且最多 Buffer#remaining out.remaining() 會寫入位元組。 緩衝區的位置會進階以反映讀取的字元和寫入的位元組,但不會修改其標記和限制。
除了從輸入緩衝區讀取字元並將位元組寫入輸出緩衝區之外,這個方法也會傳回 CoderResult 物件,以描述終止的原因:
<UL>
<李>
CoderResult#UNDERFLOW 表示盡可能多地編碼輸入緩衝區。 如果沒有進一步的輸入,則叫用者可以繼續進行編碼作業的下一個步驟。 否則,應該使用進一步的輸入再次叫用這個方法。
</李>
<李>
CoderResult#OVERFLOW 表示輸出緩衝區中空間不足,無法編碼更多字元。 這個方法應該再次叫用具有更多 Buffer#remaining 剩餘位元組的輸出緩衝區。 這通常是透過從輸出緩衝區清空任何編碼的位元組來完成。
</李>
<李>
CoderResult#malformedForLength 格式不正確的輸入結果表示偵測到格式不正確的輸入錯誤。 格式錯誤的字元會從輸入緩衝區的 (可能遞增) 位置開始;格式錯誤的字元數目可藉由叫用結果物件的 CoderResult#length() length 方法來決定。 只有當此編碼器的 #onMalformedInput 格式不正確的動作為 CodingErrorAction#REPORT時,才會套用此案例;否則會視要求忽略或取代格式不正確的輸入。
</李>
<李>
CoderResult#unmappableForLength unmappable-character 結果表示偵測到無法套用的字元錯誤。 編碼無法套用字元的字元會從輸入緩衝區(可能遞增)位置開始;這類字元的數目可藉由叫用結果物件的 CoderResult#length() length 方法來決定。 只有當此編碼器的 #onUnmappableCharacter 無法套用的動作為 CodingErrorAction#REPORT時,才適用此案例,否則會視要求忽略或取代無法套用的字元。
</李>
</ul>
在任何情況下,如果這個方法要在相同的編碼作業中重新叫用,則應該小心保留輸入緩衝區中剩餘的任何字元,讓它們可供下一個調用使用。
參數 endOfInput 會建議這個方法,指出叫用者是否可以提供超出指定輸入緩衝區所含的進一步輸入。 如果有可能提供其他輸入,則叫用者應該傳遞 false 此參數;如果沒有提供進一步輸入的可能性,則叫用者應該傳遞 true。 它不是錯誤的,事實上相當常見,傳入 false 一個叫用,後來發現沒有進一步的輸入實際可用。 不過,在一連串的調用中,這個方法的最終調用一律會傳遞 true ,以便將任何剩餘未編碼的輸入視為格式不正確。
此方法的運作方式是叫 #encodeLoop encodeLoop 用 方法、解譯其結果、處理錯誤狀況,並視需要重新叫用。
的 java.nio.charset.CharsetEncoder.encode(java.nio.CharBuffer, java.nio.ByteBuffer, boolean)Java 檔。
此頁面的部分是根據 Android 開放原始碼專案所建立和共用的工作進行修改,並根據 Creative Commons 2.5 屬性授權中所述的詞彙使用。