有关粘贴板内容编码的问题,我已经被困扰了很久。
问题描述:如果在浏览网页时,拷贝了一段中文网页到粘贴板。在dotnet中,获取粘贴板上的html格式的数据时,捕获到的中文信息出现了乱码。而英文的内容就不会出现问题。我想一定是编码的问题。
意图:
我的目的是要获取粘贴板上从网页中拷贝的信息。因为DataFormats.UnicodeText和DataFormats.Text格式的数据并不含有数据的格式信息(比如我们从网页上拷贝了一个表格)。所以我想获取DataFormats.Html格式的信息。
测试代码很简单,你可以试一下:
首先从网页上拷贝一段中文信息。
然后在一个winForm中执行下面的代码:
private void button5_Click(object sender, System.EventArgs e)
{
try
{
IDataObject data = Clipboard.GetDataObject();
if(data.GetDataPresent(DataFormats.Html))
{
string dataHtml = data.GetData(DataFormats.Html,true) as string;
MessageBox.Show(dataHtml);
}
}
catch(Exception ex)
{
MessageBox.Show(ex.Message );
}
}
在blogs.joycode.com上看到小峰的一个帖子:http://blog.joycode.com/zjf/posts/17535.aspx,他给了一点提示:从剪贴板得到数据是utf-8编码的,你可以用utf-8转为gb2312就可以了,不过我还是没有搞明白如何去实现。