winform程序 URL 编码问题 2天了 还没搞定, 急~~~~~~~~

LIZHIztt 2009-05-06 09:30:00
比如我们打开 www.baidu.com , 随便输入一个关键字, 比如 "品牌(七彩虹)" 点搜索, 在浏览器的地址栏自动会编码成 "%C6%B7%C5%C6%28%C6%DF%B2%CA%BA%E7%29",想问问,这种编码应该怎么在winform程序中实现(注意:不是web程序中)


注1: System.Web.HttpUtility.UrlEncode 这个已经用过了,不行,这个不能将 "(" ")" 这样的括号或特殊符号编码
注2: 从网上也找了一些类,还是不行,不是转换不了,就是连 英文字母都给编码了

...全文
339 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
junyi2003 2009-05-06
  • 打赏
  • 举报
回复
如果你想搞WEB
你的先要搞清楚,哪些是HTML中的特殊字符?他们的转义字符是哪些?
哪些是URL中的特殊字符?他们的转义字符是哪些?

这种基础知识都没搞懂,就来做程序开发迟早是要还债的。
我姓区不姓区 2009-05-06
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 41756620 的回复:]
3楼的方法还是不行 它会将阿拉伯数字和英文字母也给转换掉
[/Quote]
那就试试这个吧:

static void Main(string[] args)
{
Console.WriteLine(Encode("safsdf123品牌(七彩虹)"));

}

public static string Encode(string p_Text)
{
return Regex.Replace(p_Text, "[^a-zA-Z0-9]", delegate(Match match) { return "%" + BitConverter.ToString(Encoding.GetEncoding("gb2312").GetBytes(match.Value)).Replace("-", "%"); });
}

/*
输出:
safsdf123%C6%B7%C5%C6%28%C6%DF%B2%CA%BA%E7%29

*/
junyi2003 2009-05-06
  • 打赏
  • 举报
回复
LZ根本没搞清为啥要UrlEncode? UrlEncode要对那些字符Encode?
"(" ")" 本来就不需要UrlEncode,因为在Url串里面它们不是特殊字符 -.- ,这类基础问题都需要2天?
如果为了严谨可以使用那么就对包括AscII的字符都要Encode,那么把英文字母Encode了也是很正常的。
烈火蜓蜻 2009-05-06
  • 打赏
  • 举报
回复
System.Web.HttpUtility.UrlEncode 这个可以吧
zhaowt_2008 2009-05-06
  • 打赏
  • 举报
回复
mark
LIZHIztt 2009-05-06
  • 打赏
  • 举报
回复
3楼的方法还是不行 它会将阿拉伯数字和英文字母也给转换掉
xin_xiao 2009-05-06
  • 打赏
  • 举报
回复
3楼正解,能解释下吗
cpio 2009-05-06
  • 打赏
  • 举报
回复
因为括号跟字母都属于字符,所以是一视同仁的

要想括号被转,而字符不转的话,只有把括号单独处理
conan19771130 2009-05-06
  • 打赏
  • 举报
回复
ding
我姓区不姓区 2009-05-06
  • 打赏
  • 举报
回复

Console.WriteLine(BitConverter.ToString(System.Text.Encoding.GetEncoding("gb2312").GetBytes("品牌(七彩虹)")).Replace("-", "%"));
蓝海D鱼 2009-05-06
  • 打赏
  • 举报
回复
参考这个

<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
<!--#include file="collecter.asp"-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<link href="../Css/Global.css" rel="stylesheet" type="text/css" />
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
</head>

<body>
<%

ConStr = GetHttpPageUtf8("http://so.youku.com/search_video/q_%E5%AA%B3%E5%A6%87%E5%84%BF%E5%92%8C%E5%B0%91%E5%A5%B6%E5%A5%B6")
'ConStr = UrlEncoding(ConStr)
strValue = GetArray(ConStr,"<a href=""http://v.youku.com/v_show/id","</a>",true,true)
strArry = Split(strValue,"$Array$")
'response.Write(Lbound(strArry)&":"&Ubound(strArry))
j = 1
for i =0 to Ubound(strArry)
' response.Write(Len(strArry(i))&"<br>")
if Len(strArry(i)) <100 then
tempID = GetArray(strArry(i),"id_","=.html",false,false)
tempTitle = GetArray(strArry(i),"第","集",true,true)
tempStr = "<div class='makedsj'><a href='javascript:void(0)' onclick='playTarget("""&tempID&""",""youku"")'>"&tempTitle&"</a></div>"
response.Write(tempStr)
' j = j +1
end if
next
%>
</body>
</html>


cpio 2009-05-06
  • 打赏
  • 举报
回复
如果只有括号转不了的话,你可以再把里面的括号替换一下就可以了
zgke 2009-05-06
  • 打赏
  • 举报
回复
public string GetUrlString(string p_Text)
{
byte[] _Value =Encoding.GetEncoding("GB2312").GetBytes(p_Text);

return "%"+BitConverter.ToString(_Value).Replace('-','%');
}
goldxinx 2009-05-06
  • 打赏
  • 举报
回复
关注!
蓝海D鱼 2009-05-06
  • 打赏
  • 举报
回复
up

111,126

社区成员

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

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

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