Les octets nuls (ASCII 0x00) ne semblent pas pouvoir être copiés (Ctrl + C-capable) sous Windows. Pour en faire une démonstration, ouvrez la console de développement de votre navigateur et faites console.log('a\x00b')
. Si vous essayez de copier-coller la chaîne résultante sur un ordinateur Windows 8 (et probablement aussi d'autres versions de Windows), vous constaterez que seul le a
est copié. le \x00
et tout ce qui suit est ignoré.
Est-il possible de copier l'intégralité d'une chaîne contenant des octets nuls? Le presse-papiers peut-il même contenir des octets nuls?
(Question auxiliaire: Pourquoi les octets nuls ne peuvent-ils pas être copiés? Par exemple. Y a-t-il une raison liée à la sécurité, ou est-ce simplement que Windows est idiot?)
la source
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>
& lt; - il m'est difficile de savoir si les valeurs nulles entrent dans le Presse-papiers .. ou si elles sont insérées mais pas colléesRéponses:
Non, vous ne pouvez pas insérer de texte avec des caractères nuls incorporés dans le Presse-papiers. Regardons la liste des formats standard du presse-papier Windows . Il existe quelques formats qui contiennent des éléments généralement compris comme du texte:
CF_TEXT
(1)CF_OEMTEXT
(7)CF_UNICODETEXT
(13)Chacun de ceux-ci a cette phrase dans sa définition:
À présent,
CF_UNICODETEXT
conserve ses données au format UTF-16LE , donc il sera plus que probablement avoir une certaine octets , mais les caractères nuls (deux octets nuls dans une ligne, en gros) termineront toujours la chaîne.Nous ne pouvons que spéculer sur la raison pour laquelle les caractères nuls ne sont pas autorisés dans le texte du presse-papiers, mais il est plus que probable que ce soit simplement parce que les fonctions de traitement de chaînes les plus couramment utilisées dans Windows supposent qu'un caractère nul indique la fin. La seule autre façon de savoir où une chaîne s'arrête serait de la préfixer avec sa longueur.
Vous pouvez conserver des graphiques dans le Presse-papiers même s’ils ont probablement des octets nuls, car ils sont transmis dans différents formats (par ex.
CF_BITMAP
), qui doivent être compris différemment par les programmes.la source