请问Clipboard中从网页上复制的内容时,通过GetData(DataFormats.Html)获取的文本是什么编码的?怎样知道?

ly_0205 2006-02-18 06:21:24
尝试了很久,好像只有utf-8最接近,但是转换出来中文字符还是有很多“?”,都是在中文字符与那种单字节符号相邻的地方。
比如说: 网页上复制的文本是“你好a”,程序中得到的却是“你?a”了。
请问这个问题怎样解决?
谢谢!!
...全文
307 17 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
Optione 2006-03-05
  • 打赏
  • 举报
回复
晚上7:00多回来研究了一下,的确是GetData方法使用了不规范的解码.

原因就是上面说的一样,在处理3byte的字符时有问题.

关于UTF8编码方式,请自己参考文档.



正题:

介于以上问题,只有使用API了,
请参考以下DLL函数:
user32.dll
OpenClipboard,GetClipboardData,CloseClipboard,RegisterClipboardFormat

可能需要
kernel32.dll
GlobalLock,GlobalSize,GlobalUnlock


不行就留邮箱吧~(今天同学生日喝多了,先睡觉了)
Optione 2006-03-05
  • 打赏
  • 举报
回复
今天不忙~ 下午帮你仔细研究一下,晚上给你解决方案.
ly_0205 2006-03-04
  • 打赏
  • 举报
回复
请参考:
http://community.csdn.net/Expert/topic/4581/4581937.xml?temp=.7930872
那是我的代码,Encoding.Convert与Encoding.UTF8.GetString得到的结果是一样的,这个我实际尝试过..

我不是想当然就来问的,所以请不要想当然回答,谢谢!!
ly_0205 2006-03-04
  • 打赏
  • 举报
回复
程序中得到的是:“你?”,后面的a也不见了..
ly_0205 2006-03-04
  • 打赏
  • 举报
回复
这个不行,这就是结果:
网页上复制的文本是“你好a”,程序中得到的却是“你?a”了。
我最开始就已经说了..
Optione 2006-03-04
  • 打赏
  • 举报
回复
哈哈~ 没有注意这个问题

CF_HTML文档说的是采用UTF8编码(CF_HTML is entirely text format and uses the transformation format UTF-8),但转换过来有字符丢失,可能是GetData方法本身使用了不规范的解码所制.

UTF8编码本身长度不一(1-3byte),有3byte的字符丢失.

以上是初步结论,没细看,有时间慢慢研究.
Optione 2006-03-02
  • 打赏
  • 举报
回复
本想叫你自己动手的. ^^

附源代码(试试吧),原理其实很简单的,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;
}
ly_0205 2006-03-02
  • 打赏
  • 举报
回复
那么请问你有没有实际转过包含中文字符的超文本?
Optione 2006-03-02
  • 打赏
  • 举报
回复
把UTF8转换成Default编码就可以了~

很难吗?
ly_0205 2006-02-22
  • 打赏
  • 举报
回复
顶起来...
ly_0205 2006-02-21
  • 打赏
  • 举报
回复
顶起来..
veryhappy 2006-02-20
  • 打赏
  • 举报
回复
关注……
ly_0205 2006-02-20
  • 打赏
  • 举报
回复
顶起来.
daixinhou 2006-02-20
  • 打赏
  • 举报
回复
up
ly_0205 2006-02-19
  • 打赏
  • 举报
回复
顶起来
ly_0205 2006-02-19
  • 打赏
  • 举报
回复
不是System.Text.Encoding.Default , System.Text.Encoding.Default解出来所有中文字符都是乱码
vosov 2006-02-18
  • 打赏
  • 举报
回复
System.Text.Encoding.Default

111,088

社区成员

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

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

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