在Windows上,空字节(ASCII 0x00)似乎不可复制(Ctrl + C-able)。为了演示这一点,请打开浏览器的开发控制台并执行console.log('a\x00b')
。如果尝试将结果字符串复制粘贴到Windows 8计算机(可能还有Windows的其他版本)上,则会发现仅a
复制被获取。在\x00
后,一切都将被忽略。
有什么方法可以复制包含空字节的字符串的全部内容吗?剪贴板可以容纳空字节吗?
(辅助问题:为什么不能复制空字节?例如,是否存在与安全相关的原因,或者仅仅是Windows愚蠢?)
使用unxutils gclip和pclip
—
barlop
C:\>echo 000000| xxd -r -p|gclip<ENTER> C:\>pclip|xxd -p<ENTER> C:\>pclip>a.a<ENTER>
<-不清楚空值是否进入剪贴板..或它们是否在其中但没有粘贴。
在链中的某个位置,程序正在使用以空值终止的字符串函数/表示形式(即C字符串函数)。很普通的。我对这些事情的了解很微弱,是“是”,存在嵌入空值的潜在安全问题,这主要是由于可能会错误地识别字符串长度和缓冲区溢出(??)。
—
约里克(Yorik)
令人困惑:我将JPG的内容复制到剪贴板,当我读回它时,它在第一个空值处被截断,这表明剪贴板是基于文本的。但是我可以在图形包之间进行屏幕转储或剪切和粘贴图像而不会出现问题。
—
AFH 2015年
我想这取决于所使用的格式。剪贴板支持不同的格式。如果您复制文本,则很可能不支持使用空字符,因为它们被用作字符串终止符。如果使用二进制剪贴板格式,则可以复制和粘贴空字节。
—
Alexey Ivanov
C:\>echo 000000| xxd -r -p|xxd -p<ENTER> 000000 C:\>echo 000000| xxd -r -p|clip<ENTER> >