从网页中拷贝一段有颜色的文字,粘贴到word中是有颜色的,粘贴到txt文件是无颜色的,那么拷贝的是什么?


如果是红色的world,代码可能是world,但真正拷贝的应该不是它,直接复制这段代码复制到word中还是显示这段代码而不是红色的hello。曾把word文档另存为rtf,找到world对应的字段


 <w:r w:rsidRPr="00903B1E">
<w:rPr>
<w:color w:val="FF0000"/>
</w:rPr>
<w:t>world
</w:t>
</w:r>

复制到word文档中还是显示代码而不是红色的world。

所以,不知道拷贝的时候,计算机到底储存了什么,支持富文本的编辑器和普通的txt文档是如何处理这些信息的?

word 富文本编辑器 代码高亮

夏娜俺D嫁 10 years, 10 months ago

这个问题的答案在于Windows的剪贴板本身。
因为Windows的剪贴板是支持富文本的,为了实现这种功能,事实上其内部对同一个数据(就是当你按下键盘上的Ctrl+C后)会保存不同格式的多个版本。具体的版本类型可以参考 http://msdn.microsoft.com/en-us/library/windows/desktop/ms649013%28v=vs.85%29.aspx ,有十来种呢。
我们最常用的一种,是从网页中复制一段内容,这时其实剪贴板会保存两种格式,一种是CF_TEXT格式,就是剔除格式信息后的可见文本,粘贴到记事本中输出的就是这种;另一种是CF_HTML格式,可以参考 http://msdn.microsoft.com/en-us/library/windows/desktop/ms649015%28v=vs.85%29.aspx ,包含所复制区域的完整HTML格式信息。word本身是支持HTML格式的,因此粘贴到word时会用这种格式输出。

我还记得以前有一段时间,从word复制内容出来粘贴到QQ上老是会变成图片发送出去,猜测应该是QQ从剪贴板读取数据时优先提取了CF_BITMAP格式所致。

maplew answered 10 years, 10 months ago

Your Answer