sen*_*hin 16 windows clipboard copy-paste
空字节 (ASCII 0x00) 在 Windows 上似乎不可复制(Ctrl+C-able)。要对此进行演示,请打开浏览器的开发控制台并执行console.log('a\x00b')
. 如果您尝试将结果字符串复制粘贴到 Windows 8 机器(也可能是其他版本的 Windows)上,您会发现只有a
被复制的字符串。在\x00
后,一切都将被忽略。
有没有办法复制包含空字节的整个字符串?剪贴板甚至可以保存空字节吗?
(辅助问题:为什么不能复制空字节?例如,是否存在与安全相关的原因,或者只是 Windows 愚蠢?)
Ben*_*n N 12
不,您不能在剪贴板上放置带有嵌入空字符的文本。让我们看看标准的 Windows 剪贴板格式列表。有几种格式可以保存通常理解为文本的内容:
CF_TEXT
(1)CF_OEMTEXT
(7) CF_UNICODETEXT
(13)每一个在其定义中都有这句话:
空字符表示数据结束。
现在,CF_UNICODETEXT
将其数据保留为 UTF-16LE,因此它很可能会有一些空字节,但空字符(基本上是连续两个空字节)仍将结束字符串。
我们只能推测为什么剪贴板文本中不允许使用空字符,但很可能只是因为 Windows 中最常用的字符串处理函数假设空字符表示结束。知道字符串在哪里停止的唯一其他方法是为其长度添加前缀。
您可以将图形保存在剪贴板上,即使它们可能具有空字节,因为它们以不同的剪贴板格式(例如CF_BITMAP
)传递,程序必须以不同的方式理解这些格式。
归档时间: |
|
查看次数: |
16503 次 |
最近记录: |