如何确定剪贴板内容的编码

时间:2011-04-06 12:55:51

标签: c# .net encoding clipboard

我有第三方应用程序,我需要从中复制文本并将其粘贴到visual studio中。但是,当我复制 vysved č enie 等文本并粘贴到Visual Studio文本编辑器中时,我得到< EM> vysved 的 è ENIE

我打赌这是因为其他程序将非unicode编码的文本放入剪贴板。所以我制作了一个程序来定期检查剪贴板并将文本转换为unicode,如下所示:

var originalText = Clipboard.GetText(TextDataFormat.Text);
Clipboard.SetText(originalText, TextDataFormat.UnicodeText);

这很好用,但问题是如何确定我已经在剪贴板中有一个unicode编码的文本,这样我就不会再尝试转换它了?

我认为Clipboard.ContainsText(TextDataFormat.UnicodeText)会起作用,但这总是正确的。

2 个答案:

答案 0 :(得分:2)

使用Clipboard.GetDataObject()

然后,您可以在IDataObject返回时致电GetFormats()

答案 1 :(得分:0)

另请注意:来自MSDN文档的说明: Clipboard类只能在设置为单线程单元(STA)模式的线程中使用。要使用此类,请确保使用STAThreadAttribute属性标记Main方法。