c# 中 Clipboard 读取 html 中文乱码问题

acorn_liu 2006-08-16 07:14:10
在c#中操作剪切板时如果使用 Clipboard.GetText()时中文正常
当使用 Clipboard.GetData(TextDataFormat.Html)时只要遇到中文就会乱码,
后来经过如下处理大部分中文可以显示,但是遇到某些文字还是会乱码,不知何故,还请高手指点阿!

byte[] data = Encoding.Convert(Encoding.UTF8, Encoding.Default, Encoding.Default.GetBytes(Clipboard.GetText(TextDataFormat.Html)));
string str = Encoding.Default.GetString(data);

这是剪切板中的html
<html>
<body>杭州市</body>
</html>

这是上述结果中的str值
Version:1.0
StartHTML:000000215
EndHTML:000000376
StartFragment:000000330
EndFragment:000000340
StartSelection:000000330
EndSelection:000000340
SourceURL:file://C:\Documents and Settings\kevin\桌面\a.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<HTML><HEAD></HEAD>

<BODY><!--StartFragment-->杭州?<!--EndFragment--></BODY>
</HTML>
...全文
328 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
阿牛138588 2006-08-16
  • 打赏
  • 举报
回复
读取html源码?为什么要用clipboard?不用sock直接下载?
acorn_liu 2006-08-16
  • 打赏
  • 举报
回复
有那位高手指点一二 阿,急!!!!!
acorn_liu 2006-08-16
  • 打赏
  • 举报
回复
可是问题怪就怪在读取文本方式出来的数据就是正常的不会乱码
如:
Clipboard.GetText()
但是我需要读取html源码!!!!
acorn_liu 2006-08-16
  • 打赏
  • 举报
回复
楼上说的有道理,但是这两种办法得出的结果是一样的,我也在怀疑系统把ascii编码直接当unicode处理而使一些字符无法识别变成了0x30而此后是不可能转回去的,但是不知道有什么办法可以改变默认使用的编码方式
www_123du_com 2006-08-16
  • 打赏
  • 举报
回复
//这句是系统从剪贴板中取得字符串(这里可能已经丢失数据了)
string str = Clipboard.GetText(TextDataFormat.Html);

//系统用的是Default编码,但实际上不是Default。这句是用来还原byte[]
byte[] buffer = Encoding.Default.GetBytes(str);

//这句用正确的编码方式来解码(不需要像你那样把byte[]再转换一次)
string str = Encoding.UTF8.GetString(buffer);
acorn_liu 2006-08-16
  • 打赏
  • 举报
回复
!!!

110,539

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧