CharsetDecoder.Decode Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Überlädt
| Name | Beschreibung |
|---|---|
| Decode(ByteBuffer) |
Convenience-Methode, die den verbleibenden Inhalt eines einzelnen Eingabebytepuffers in einen neu zugeordneten Zeichenpuffer decodiert. |
| Decode(ByteBuffer, CharBuffer, Boolean) |
Decodiert so viele Bytes wie möglich vom angegebenen Eingabepuffer und schreibt die Ergebnisse in den angegebenen Ausgabepuffer. |
Decode(ByteBuffer)
Convenience-Methode, die den verbleibenden Inhalt eines einzelnen Eingabebytepuffers in einen neu zugeordneten Zeichenpuffer decodiert.
[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
Parameter
- in
- ByteBuffer
Der Eingabebytepuffer
Gibt zurück
Ein neu zugewiesener Zeichenpuffer, der das Ergebnis des Decodierungsvorgangs enthält. Die Position des Puffers ist null, und sein Grenzwert folgt dem letzten geschriebenen Zeichen.
- Attribute
Ausnahmen
wenn ein weiterer Decodierungsvorgang ausgeführt wird.
wenn eine ungültige Eingabebytesequenz für dieses Zeichensatz aufgetreten ist und die Aktion für falsch formatierten Fehler ist Report
wenn eine legale, aber nicht verwendbare Eingabebytesequenz für diese Zeichenmenge gefunden wurde, und die Aktion für nicht verwendbaren Zeichenfehler lautet Report. Nicht verwendbar bedeutet, dass die Bytesequenz an der aktuellen Position des Eingabepuffers nicht einer Unicode-Zeichensequenz zugeordnet werden kann.
wenn während des Decodierungsvorgangs eine weitere Ausnahme aufgetreten ist.
Hinweise
Convenience-Methode, die den verbleibenden Inhalt eines einzelnen Eingabebytepuffers in einen neu zugeordneten Zeichenpuffer decodiert.
Diese Methode implementiert einen gesamten Decodierungsvorgang; d. h., er setzt diesen Decoder zurück, decodiert dann die Bytes im angegebenen Bytepuffer und löscht schließlich diesen Decoder. Diese Methode sollte daher nicht aufgerufen werden, wenn bereits ein Decodierungsvorgang ausgeführt wird.
Java Dokumentation für java.nio.charset.CharsetDecoder.decode(java.nio.ByteBuffer).
Teile dieser Seite sind Änderungen auf der Grundlage von Arbeiten, die von der Android Open Source Project erstellt und gemeinsam verwendet und gemäß den in der 2.5 Attribution License beschriebenen Begriffen verwendet werden.
Gilt für:
Decode(ByteBuffer, CharBuffer, Boolean)
Decodiert so viele Bytes wie möglich vom angegebenen Eingabepuffer und schreibt die Ergebnisse in den angegebenen Ausgabepuffer.
[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
Parameter
- in
- ByteBuffer
Der Eingabebytepuffer
- out
- CharBuffer
Der Ausgabezeichenpuffer
- endOfInput
- Boolean
true wenn und nur, wenn der Aufrufer keine zusätzlichen Eingabebytes über die im angegebenen Puffer hinausgehen kann
Gibt zurück
Ein Coderergebnisobjekt, das den Grund für die Beendigung beschreibt
- Attribute
Ausnahmen
wenn die Decodierung gestartet wurde oder keine weiteren Eingaben in diesem Decodierungsfortschritt erforderlich sind.
wenn die DecodeLoop(ByteBuffer, CharBuffer) Methode eine BufferUnderflowException oder BufferOverflowException.
Hinweise
Decodiert so viele Bytes wie möglich vom angegebenen Eingabepuffer und schreibt die Ergebnisse in den angegebenen Ausgabepuffer.
Die Puffer werden von ihren aktuellen Positionen gelesen und in diese geschrieben. Die meisten Buffer#remaining in.remaining() Bytes werden gelesen, und die meisten Buffer#remaining out.remaining() Zeichen werden geschrieben. Die Positionen der Puffer werden erweitert, um die gelesenen Bytes und die geschriebenen Zeichen widerzuspiegeln, aber ihre Markierungen und Grenzwerte werden nicht geändert.
Neben dem Lesen von Byte aus dem Eingabepuffer und dem Schreiben von Zeichen in den Ausgabepuffer gibt diese Methode ein CoderResult Objekt zurück, um den Grund für die Beendigung zu beschreiben:
<Ul>
<li>
CoderResult#UNDERFLOW gibt an, dass so viel der Eingabepuffer wie möglich decodiert wurde. Wenn keine weitere Eingabe vorhanden ist, kann der Aufrufer mit dem nächsten Schritt des Decodierungsvorgangs fortfahren. Andernfalls sollte diese Methode erneut mit weiteren Eingaben aufgerufen werden.
</li>
<li>
CoderResult#OVERFLOW gibt an, dass im Ausgabepuffer nicht genügend Speicherplatz vorhanden ist, um weitere Bytes zu decodieren. Diese Methode sollte erneut mit einem Ausgabepuffer aufgerufen werden, der mehr Puffer#verbleibenden Zeichen enthält. Dies erfolgt in der Regel durch Entwässern von decodierten Zeichen aus dem Ausgabepuffer.
</li>
<li>
Ein "CoderResult#malformedForLength"-Eingabeergebnis weist darauf hin, dass ein falsch formatierter Eingabefehler erkannt wurde. Die falsch formatierten Bytes beginnen an der Position des Eingabepuffers (möglicherweise inkrementiert). Die Anzahl der falsch formatierten Bytes kann durch Aufrufen der Methode des Ergebnisobjekts CoderResult#length() length bestimmt werden. Dieser Fall gilt nur, wenn die #onMalformedInput falsch formatierte Aktion dieses Decoders lautet CodingErrorAction#REPORT. Andernfalls wird die falsch formatierte Eingabe ignoriert oder ersetzt, wie angefordert.
</li>
<li>
Ein CoderResult#unmappableForLength unappable-character-Ergebnis gibt an, dass ein nicht verwendbarer Zeichenfehler erkannt wurde. Die Bytes, die das nicht verwendbare Zeichen decodieren, beginnen an der Position des Eingabepuffers (möglicherweise inkrementiert). die Anzahl solcher Bytes kann durch Aufrufen der Methode des Ergebnisobjekts CoderResult#length() length bestimmt werden. Dieser Fall gilt nur, wenn die #onUnmappableCharacter nicht verwendbare Aktion dieses Decoders lautet CodingErrorAction#REPORT. Andernfalls wird das nicht verwendbare Zeichen wie angefordert ignoriert oder ersetzt.
</li>
</ul>
Wenn diese Methode in jedem Fall in demselben Decodierungsvorgang wiedergerufen werden soll, sollten Sie darauf achten, alle im Eingabepuffer verbleibenden Bytes beizubehalten, damit sie für den nächsten Aufruf verfügbar sind.
Der endOfInput Parameter gibt an, ob der Aufrufer weitere Eingaben bereitstellen kann, die im angegebenen Eingabepuffer enthalten sind. Wenn es eine Möglichkeit gibt, zusätzliche Eingaben bereitzustellen, sollte der Aufrufer für diesen Parameter übergeben false werden. Wenn keine Möglichkeit besteht, weitere Eingaben bereitzustellen, sollte der Aufrufer übergeben truewerden. Es ist nicht irrtümlich, und tatsächlich ist es ziemlich üblich, einen Aufruf zu übergeben false und später zu erkennen, dass keine weiteren Eingaben tatsächlich verfügbar waren. Es ist jedoch wichtig, dass der endgültige Aufruf dieser Methode in einer Folge von Aufrufen immer übergeben true wird, sodass alle verbleibenden nicht codierten Eingaben als falsch formatiert behandelt werden.
Diese Methode funktioniert durch Aufrufen der #decodeLoop decodeLoop Methode, Interpretieren der Ergebnisse, Behandeln von Fehlerbedingungen und erneutes Aufrufen der Methode nach Bedarf.
Teile dieser Seite sind Änderungen auf der Grundlage von Arbeiten, die von der Android Open Source Project erstellt und gemeinsam verwendet und gemäß den in der 2.5 Attribution License beschriebenen Begriffen verwendet werden.