C# 从剪贴板中读取HTML中的中文字符出现乱码问题的解决方案

通过如下代码在剪贴板中获取含HTML格式的文本时发现当内容出现汉字的时候会有乱码

if ( Clipboard . ContainsText(TextDataFormat.Html))
    textBox1.Text = Clipboard.GetText(TextDataFormat.Html);
通过剪贴板工具分析,HTML格式的文本是UTF8编码方式 看来Clipboard.GetText()是解码出了问题201001142227345081.gif

那就自己来完成这个解码工作吧!
if (Clipboard.ContainsText(TextDataFormat.Html))
{
   MemoryStream vMemoryStream = 
       Clipboard.GetData("Html Format") as MemoryStream;
    vMemoryStream.Position = 0;
   byte[] vBytes = new byte[vMemoryStream.Length];
    vMemoryStream.Read(vBytes, 0, (int)vMemoryStream.Length);
    textBox1.Text = Encoding.UTF8.GetString(vBytes);
}

 Clipboard 类提供一个容器,用于通过剪贴板传输数据和对象。在 AIR 中,Clipboard 类还用于拖放操作。通过静态 generalClipboard 属性可以访问操作系统剪贴板。

Clipboard 对象可以包含多种格式的相同信息。通过以多种格式提供信息,可以增加另一个应用程序能够使用该信息的机会。使用 setData()setDataHandler() 方法向 Clipboard 对象添加数据。

标准格式是:

  • BITMAP_FORMAT:BitmapData 对象(仅限 AIR)
  • FILE_LIST_FORMAT:File 对象的数组(仅限 AIR)
  • HTML_FORMAT:HTML 格式的字符串数据
  • TEXT_FORMAT:字符串数据
  • RICH_TEXT_FORMAT:包含 RTF 格式数据的 ByteArray
  • URL_FORMAT:URL 字符串(仅限 AIR)

ClipboardFormats 类中定义了用作标准格式的名称的这些常量。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值