Null-Bytes (ASCII 0x00) scheinen unter Windows nicht kopierbar zu sein (Strg + C-fähig). Öffnen Sie zur Demonstration die Entwicklungskonsole Ihres Browsers und tun Sie dies console.log('a\x00b')
. Wenn Sie versuchen, die resultierende Zeichenfolge auf einem Windows 8-Computer (und wahrscheinlich auch auf anderen Windows-Versionen) zu kopieren und einzufügen, werden Sie feststellen, dass nur die a
Zeichenfolge kopiert wird. Das \x00
und alles danach wird ignoriert.
Gibt es eine Möglichkeit, die Gesamtheit einer Zeichenfolge zu kopieren, die Null-Bytes enthält? Kann die Zwischenablage sogar Null-Bytes enthalten?
(Hilfsfrage: Warum können keine Null-Bytes kopiert werden? Gibt es beispielsweise einen sicherheitsrelevanten Grund dafür oder ist Windows nur albern?)
quelle
C:\>echo 000000| xxd -r -p|xxd -p<ENTER> 000000 C:\>echo 000000| xxd -r -p|clip<ENTER> >
C:\>echo 000000| xxd -r -p|gclip<ENTER> C:\>pclip|xxd -p<ENTER> C:\>pclip>a.a<ENTER>
<- mir ist nicht klar, ob die Nullen in die Zwischenablage verschoben werden oder ob sie eingegeben, aber nicht eingefügt werden.Antworten:
Nein, Sie können keinen Text mit eingebetteten Nullzeichen in die Zwischenablage einfügen. Schauen wir uns die Liste der Standardformate für die Windows-Zwischenablage an . Es gibt einige Formate, in denen Dinge allgemein als Text verstanden werden:
CF_TEXT
(1)CF_OEMTEXT
(7)CF_UNICODETEXT
(13)Jeder einzelne von ihnen hat diesen Satz in seiner Definition:
Nun
CF_UNICODETEXT
hält seine Daten als UTF-16LE , so ist es mehr als wahrscheinlich einig null hat Bytes , aber Null - Zeichen (zwei Null - Bytes in einer Reihe, im Grunde) noch die Zeichenfolge beenden.Wir können nur darüber spekulieren, warum Nullzeichen im Text der Zwischenablage nicht zulässig sind, aber höchstwahrscheinlich nur, weil die in Windows am häufigsten verwendeten Zeichenfolgenverarbeitungsfunktionen davon ausgehen, dass ein Nullzeichen das Ende signalisiert. Die einzige andere Möglichkeit zu wissen, wo eine Zeichenfolge stoppt, besteht darin, ihr ihre Länge voranzustellen.
Sie können Grafiken in der Zwischenablage speichern, obwohl sie wahrscheinlich Null-Bytes haben, da sie in verschiedenen Zwischenablageformaten (z. B.
CF_BITMAP
) weitergegeben werden, die von Programmen unterschiedlich verstanden werden müssen.quelle