当尝试复制到剪贴板时,
Clipboard.SetData(DataFormats.Text, "");和
Clipboard.SetText("");发布于 2015-05-22 23:03:59
SetText只是SetData的一种方便的方法,只有使用SetText才能使用ANSI
出处
public static void SetText(string text)
{
....
SetText(text, TextDataFormat.UnicodeText); //<------------
}
public static void SetText(string text, TextDataFormat format)
{
....
SetDataInternal(DataFormats.ConvertToDataFormats(format), text);
}
public static void SetData(string format, object data)
{
....
SetDataInternal(format, data);
} 所以,两者都使用SetDataInternal
发布于 2015-05-22 23:05:31
您使用的格式Text没有指定它是Unicode。正如我们在源代码中所看到的,SetText调用SetDataInternal(DataFormats.UnicodeText, data),而第二个示例调用SetDataInternal(DataFormats.Text, data)。
DataFormats.Text指定ANSI编码。它基本上意味着some字符被一些?或类似的字符所取代。在另一个问题/答案中阅读更多关于这种格式的内容:什么是ANSI格式?
发布于 2015-05-22 23:03:36
文档说明了Clipboard.SetText()所做的事情:
将UnicodeText数据存储在剪贴板上。
这表明Clipboard.SetText("")等同于Clipboard.SetData(DataFormats.UnicodeText, "");
因此,为了回答您的问题,Clipboard.SetText("")将一个空的unicode文本字符串放入剪贴板,而Clipboard.SetData(DataFormats.Text, "");则在那里存储一个空的ANSI文本字符串。
https://stackoverflow.com/questions/30406982
复制相似问题