我写了一个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=&tn=&rn=&pn=&lm=&kw=%B0%D9%B6%C8&rs2=0&myselectvalue=1&word=%B0%D9%B6%C8&tb=on"
target=_blank>鐧惧害鍚?/A>鐣欒█
经研究发现,原本IE中的HTML是GB2312的编码,被.NET当成了UTF8编码转换。转化后的英文没有问题,汉字成了乱码。
我尝试用下面的代码把汉字乱码恢复正常。
string
a;
byte
[] bs;
bs
=
System.Text.Encoding.Default.GetBytes(o.ToString());
a
=
System.Text.Encoding.UTF8.GetString(bs);
但是有些极端情况下,还是存在少量的乱码无法恢复,因为原始的信息已经被破坏了。
向上面那段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>留言
不知道哪位达人有办法解决这个问题??
从IE中圈一段网页,按Ctr+C,在C#中通过剪切板获取HTML代码。(用拖拽也一样效果)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
得到的字符串中,英文完好,但是汉字变成了乱码。
下面的原始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=&tn=&rn=&pn=&lm=&kw=%B0%D9%B6%C8&rs2=0&myselectvalue=1&word=%B0%D9%B6%C8&tb=on"
target=_blank>鐧惧害鍚?/A>鐣欒█
经研究发现,原本IE中的HTML是GB2312的编码,被.NET当成了UTF8编码转换。转化后的英文没有问题,汉字成了乱码。
我尝试用下面的代码把汉字乱码恢复正常。
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/6810355c2f78c12e91b7997a8e8c583a.gif)
但是有些极端情况下,还是存在少量的乱码无法恢复,因为原始的信息已经被破坏了。
向上面那段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>留言
不知道哪位达人有办法解决这个问题??