"剪切和粘贴"如何影响字符编码以及可能出现的问题?

pet*_*ust 18 character-encoding cut-and-paste

我在工具A中显示了编码A的文档A,在工具B中显示了编码B的文档B.如果我将B(部分)B剪切并粘贴到A中可能是什么结果字符编码?我意识到这取决于工具A和工具B以及粘贴缓冲区中保存的信息(可能包含编码?)和操作系统.

高质量的工具应该做什么?并且在实践中有多少常用工具(例如Word,TextPad,各种IDE等)做得很好?

Jon*_*erg 20

首先,文本编辑器的文本内部表示与保存文件时文本的编码(序列化)无关.所以文档不是"编码"; 这是一系列抽象人物.当文档被保存到文件(或在网络上传输)然后它被编码.

由每个应用程序决定它放在剪贴板上的内容.通常,知道它正在做什么的Windows应用程序会在剪贴板上放置许多不同的表示.当您粘贴到其他应用程序时,该应用程序将查找最适合其需要的表示.

在您的情况下,文本编辑器(知道它正在做什么)将把选定字符串的Unicode表示放到剪贴板上(其中,在Windows中,Unicode通常以UTF-16的形式移动,但这并不重要).当您粘贴到其他应用程序时,它会将该Unicode字符序列插入到选择点的文档中.

有一个叫做"ClipSpy"的应用程序可以帮助你以交互方式看到我在说什么.

  • 实际上,在Windows CF_TEXT上,始终存在CF_OEMTEXT和CF_UNICODETEXT.将一个添加到剪贴板,使用转换添加剪贴板并添加其他剪贴板.所以剪贴板*做了*事情. (11认同)
  • 我不确定你的意思.除了保留应用程序放在那里的一些字节之外,剪贴板不会*执行任何操作.剪贴板的作用类似于键值存储,其中键类似于mimetype,值为blob(然后根据类型进行解释). (3认同)