估计是.Net的一个Bug, 用剪切板取到的HTML汉字变乱码

我写了一个WinForm程序,希望从剪切板中获取Html代码。
从IE中圈一段网页,按Ctr+C,在C#中通过剪切板获取HTML代码。(用拖拽也一样效果)
string  st  =   " HTML Format " ;
object  o  =  Clipboard.GetData(st);


得到的字符串中,英文完好,但是汉字变成了乱码。
下面的原始HTML代码:

请到<a href="http://post.baidu.com/f?ct=&tn=&rn=&pn=&lm=&kw=%B0%D9%B6%C8&rs2=0&myselectvalue=1&word=%B0%D9%B6%C8&tb=on" target="_blank">百度吧</a>留言

C#变成了:

璇峰埌<A
href="http://post.baidu.com/f?ct=&amp;tn=&amp;rn=&amp;pn=&amp;lm=&amp;kw=%B0%D9%B6%C8&amp;rs2=0&amp;myselectvalue=1&amp;word=%B0%D9%B6%C8&amp;tb=on"
target=_blank>鐧惧害鍚?/A>鐣欒█



经研究发现,原本IE中的HTML是GB2312的编码,被.NET当成了UTF8编码转换。转化后的英文没有问题,汉字成了乱码。


我尝试用下面的代码把汉字乱码恢复正常。
string  a;
byte [] bs;
bs 
=  System.Text.Encoding.Default.GetBytes(o.ToString());
=  System.Text.Encoding.UTF8.GetString(bs);


但是有些极端情况下,还是存在少量的乱码无法恢复,因为原始的信息已经被破坏了。
向上面那段HTML就变成了:
请到<A
href="http://post.baidu.com/f?ct=&amp;tn=&amp;rn=&amp;pn=&amp;lm=&amp;kw=%B0%D9%B6%C8&amp;rs2=0&amp;myselectvalue=1&amp;word=%B0%D9%B6%C8&amp;tb=on"
target=_blank>百度?/A>留言



不知道哪位达人有办法解决这个问题??
 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值