请问Clipboard中从网页上复制的内容时,通过GetData(DataFormats.Html)获取的文本是什么编码的?怎样知道? 尝试了很久,好像只有utf-8最接近,但是转换出来中文字符还是有很多“?”,都是在中文字符与那种单字节符号相邻的地方。比如说: 网页上复制的文本是“你好a”,程序中得到的却是“你?a”了。请问这个问题怎样解决?谢谢!! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 不是System.Text.Encoding.Default , System.Text.Encoding.Default解出来所有中文字符都是乱码 把UTF8转换成Default编码就可以了~很难吗? 本想叫你自己动手的. ^^附源代码(试试吧),原理其实很简单的,GetDataPresent方法用的是UTF8编码,你把他转换成Default编码就行了塞.自己动手好.private string GetHtmlFromClipboard(){ string result = string.Empty; IDataObject dataObj = Clipboard.GetDataObject(); if(dataObj.GetDataPresent(DataFormats.Html)) { string s = dataObj.GetData(DataFormats.Html).ToString(); byte[] b = System.Text.Encoding.Convert(System.Text.Encoding.UTF8,System.Text.Encoding.Default,System.Text.Encoding.Default.GetBytes(s)); result = System.Text.Encoding.Default.GetString(b); } return result;} 请参考:http://community.csdn.net/Expert/topic/4581/4581937.xml?temp=.7930872那是我的代码,Encoding.Convert与Encoding.UTF8.GetString得到的结果是一样的,这个我实际尝试过..我不是想当然就来问的,所以请不要想当然回答,谢谢!! 哈哈~ 没有注意这个问题CF_HTML文档说的是采用UTF8编码(CF_HTML is entirely text format and uses the transformation format UTF-8),但转换过来有字符丢失,可能是GetData方法本身使用了不规范的解码所制.UTF8编码本身长度不一(1-3byte),有3byte的字符丢失.以上是初步结论,没细看,有时间慢慢研究. 晚上7:00多回来研究了一下,的确是GetData方法使用了不规范的解码.原因就是上面说的一样,在处理3byte的字符时有问题.关于UTF8编码方式,请自己参考文档.正题:介于以上问题,只有使用API了,请参考以下DLL函数:user32.dllOpenClipboard,GetClipboardData,CloseClipboard,RegisterClipboardFormat可能需要kernel32.dllGlobalLock,GlobalSize,GlobalUnlock不行就留邮箱吧~(今天同学生日喝多了,先睡觉了) 链接数据库,显示提示 怎么样编程刷新指定应用程序的窗口? 请教高手!用c#代码实现从数据库中批量取出邮箱地址,邮箱帐号,密码,并同时登录到每个邮箱,要怎么实现????? 如何实现label显示的文字的向下滚动效果 msiexec.exe无法删除文件夹 O/R mapping 这是种什么工具? 请问谁用 CDO 成功发送了 HTML 的邮件 c#中如何获得变量地址(用十六进制或二进制表示出来) 固定table表头怎么动态获取表中每列的宽度 小鸟问题~~~急 数据源绑定问题 高分急:c#可以产生16进制文件吗?
UTF8编码,你把他转换成Default编码就行了塞.自己动手好.private string GetHtmlFromClipboard()
{
string result = string.Empty;
IDataObject dataObj = Clipboard.GetDataObject();
if(dataObj.GetDataPresent(DataFormats.Html))
{
string s = dataObj.GetData(DataFormats.Html).ToString();
byte[] b = System.Text.Encoding.Convert(System.Text.Encoding.UTF8,System.Text.Encoding.Default,System.Text.Encoding.Default.GetBytes(s));
result = System.Text.Encoding.Default.GetString(b);
}
return result;
}
http://community.csdn.net/Expert/topic/4581/4581937.xml?temp=.7930872
那是我的代码,Encoding.Convert与Encoding.UTF8.GetString得到的结果是一样的,这个我实际尝试过..我不是想当然就来问的,所以请不要想当然回答,谢谢!!
请参考以下DLL函数:
user32.dll
OpenClipboard,GetClipboardData,CloseClipboard,RegisterClipboardFormat可能需要
kernel32.dll
GlobalLock,GlobalSize,GlobalUnlock
不行就留邮箱吧~(今天同学生日喝多了,先睡觉了)