2013-06-10 4 views

Antwort

6

Soweit ich U+001A sagen kann, ist ein Vermächtnis Zeichen in Unicode. Sein einziger Existenzgrund ist, dass es bereits in ASCII als substitute character definiert wurde ("... wird anstelle eines Zeichens verwendet, das als ungültig oder fehlerhaft erkannt wird oder das auf einem bestimmten Gerät nicht dargestellt werden kann."). Es wurde auch manchmal verwendet, um einen Zeichenstrom zu beenden (was wahrscheinlich eine häufige Quelle von Problemen ist)

In Unicode wird diese Funktion von der U+FFFD REPLACEMENT CHARACTER übernommen.

11

Das ist der Steuercode Strg + Z. Es ist etwas Besonderes in Windows, die es von DOS erbte, die es von CP/M erbte. Seine alte Verwendung war als Textende-Markierung ähnlich der Verwendung von Strg + D in Unix.

Es ist jedoch ziemlich ungewöhnlich, es in einer Fehlermeldung zu sehen oder als das Ausweichzeichen für eine fehlgeschlagene Kodierungskonvertierung zu verwenden. Ich würde den Code überprüfen und sicherstellen, dass es nicht U + 003F oder U + FFFD ist, die typischen Codier-Fallback-Zeichen. Oder nur eine einfache Eigenart des spezifischen Codes, mit dem Sie es zu tun haben.

20

U + 001A ist im Unicode-Standard als Steuerzeichen mit dem Namen SUBSTITUTE definiert und gehört zu einer Gruppe, die wie folgt gekennzeichnet ist: chapter 16 des Standards: "Im Unicode-Standard sind 65 Codepunkte reserviert Kompatibilität mit den Kontrollcodes C0 und C1, die im Rahmen der ISO/IEC 2022 definiert sind [...] Der Unicode-Standard sieht den intakten Austausch dieser Codepunkte vor, weder , noch deren Semantik addierend oder subtrahierend. Die Semantik der Steuercodes wird im Allgemeinen durch die Anwendung bestimmt, mit der sie verwendet werden. Jedoch in Abwesenheit von spezifischen Anwendung verwendet, so können sie entsprechend der Steuerfunktion Semantik in ISO/IEC 6429 angegeben werden, interpretiert:., 1992“

ISO 6429 ist effektiv äquivalent zu ECMA 48, die diesen Code erwähnt haben die Kurzname SUB, und definiert es wie folgt: "SUB wird an der Stelle eines Zeichens verwendet, das als ungültig oder fehlerhaft befunden wurde. SUB soll mit automatisch eingeführt werden. "Dies spiegelt die definition of this control code in Ascii wider.

Daher kann U + 001A im Allgemeinen verwendet werden, um einen Zeichenebenendatenfehler anzuzeigen, wie das Vorhandensein von Bytes in angeblichen Zeichendaten, die keine Interpretation in der Zeichencodierung haben, die angewendet wird. Locker gesprochen würde es also "schlechte Zeichendaten" bedeuten, aber besser "missgestaltete Daten, wenn versucht wird, Daten als Zeichen zu interpretieren". In Unicode ist U + FFFD REPLACEMENT CHARACTER jedoch geeigneter, da es eine spezifische Unicode-Semantik aufweist.

Da die Frage mit "xml" getaggt wurde, ist zu beachten, dass in UI 1.01 U + 001A verboten ist, nach Klausel 2.2 Characters. Beachten Sie, dass der Kommentar "beliebiges Unicode-Zeichen, ausgenommen die Ersatzblöcke, FFFE und FFFF" irreführend ist (Kommentare sind jedoch nicht normativ); U + 001A ist ein Unicode-Zeichen, obwohl es kein Grafikzeichen ist und seine Wirkung nicht im Unicode-Standard definiert ist.

+0

Danke dafür, herauszufinden, warum libxml scheinbar gültige utf8 Zeichen zurückweist. Nicht sicher, warum ich sie bekomme, aber jetzt kann ich zumindest verstehen, was das Problem ist ... – mcfedr

Verwandte Themen