C#获取从IE拖动过来的连接出现乱码 e.Data.GetDataPresent(DataFormats.Html, false))

yyj135 2010-09-28 11:17:58
开发环境:C# 2008 WinForm
情况说明:
在窗体上有一个textBox控件:textBox1
要实现的目标:
从IE或其他浏览器拖动一个连接过来后获取这个连接地址。
代码如下:

private void textBox1_DragEnter(object sender, DragEventArgs e)
{
if ((e.Data.GetDataPresent(DataFormats.Html, false)) || (e.Data.GetDataPresent(DataFormats.Rtf, false)) || (e.Data.GetDataPresent(DataFormats.Text, false)))
{
CanDrog = true;
e.Effect = DragDropEffects.Copy;
}
else
e.Effect = DragDropEffects.None;
}

private void textBox1_DragDrop(object sender, DragEventArgs e)
{
e.Effect = DragDropEffects.None;
string strTitle = "";
string strUrl = "";
string strCont = "";
if (CanDrog)
{
if ((e.Data.GetDataPresent(DataFormats.Html, false)) || (e.Data.GetDataPresent(DataFormats.Rtf, false)))
{
Clipboard.SetDataObject(e.Data);

string strMFP = e.Data.GetData(DataFormats.Html, true).ToString();

System.Text.Encoding.Default.GetBytes(strMFP);

System.Text.Encoding gb2312 = System.Text.Encoding.GetEncoding("GB2312");

//byte[] encodedBytes = gb2312.GetBytes(strMFP);

byte[] encodedBytes = System.Text.Encoding.Default.GetBytes(strMFP);

strMFP = System.Text.Encoding.UTF8.GetString(encodedBytes);

Regex regx1 = new Regex(@"<TITLE.*>.*TITLE>", RegexOptions.IgnoreCase);

Match m = regx1.Match(strMFP);

if (m.Success)
{

strTitle = Regex.Replace(m.Value, "<[^>]*>", "").Replace("TITLE>", "");
}

regx1 = new Regex(@"SourceURL:.*", RegexOptions.IgnoreCase);
m = regx1.Match(strMFP);

if (m.Success)
strUrl = m.Value.Substring(10);

}


strCont = e.Data.GetData(DataFormats.Text, true).ToString();


}

}


遇到的问题:
以网站http://www.gz2010.cn/special/0078000L/newscenter.html为例,当我拖动下面这条新闻的时候:
借网络媒体加强亚运宣传 记者赞场馆赛后利用
我跟踪到的结果:
借网络媒体加强亚运宣�?记者赞场馆赛后利用
这里面出现了乱码 �?
请问如何处理?谢谢!


...全文
454 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
yyj135 2010-09-29
  • 打赏
  • 举报
回复
搞定了,下面这样就可以了:

MemoryStream vMemoryStream =
e.Data.GetData("Html Format") as MemoryStream;
vMemoryStream.Position = 0;
byte[] vBytes = new byte[vMemoryStream.Length];
vMemoryStream.Read(vBytes, 0, (int)vMemoryStream.Length);
textBox1.Text = Encoding.UTF8.GetString(vBytes);
yyj135 2010-09-29
  • 打赏
  • 举报
回复
我换了也不行。不知道哪里出错了?
大飞飞虫 2010-09-29
  • 打赏
  • 举报
回复
System.Text.Encoding 换个类型试试。
颜氓 2010-09-29
  • 打赏
  • 举报
回复
老兄,你头像太酷了点。
yyj135 2010-09-28
  • 打赏
  • 举报
回复
怎么没有人回复呀?
yyj135 2010-09-28
  • 打赏
  • 举报
回复
高手帮帮忙呀
yyj135 2010-09-28
  • 打赏
  • 举报
回复
期待高手帮忙

111,129

社区成员

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

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

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