比如我们打开 www.baidu.com , 随便输入一个关键字, 比如 "品牌(七彩虹)" 点搜索, 在浏览器的地址栏自动会编码成 "%C6%B7%C5%C6%28%C6%DF%B2%CA%BA%E7%29",想问问,这种编码应该怎么在winform程序中实现(注意:不是web程序中)
注1: System.Web.HttpUtility.UrlEncode 这个已经用过了,不行,这个不能将 "(" ")" 这样的括号或特殊符号编码
注2: 从网上也找了一些类,还是不行,不是转换不了,就是连 英文字母都给编码了
注1: System.Web.HttpUtility.UrlEncode 这个已经用过了,不行,这个不能将 "(" ")" 这样的括号或特殊符号编码
注2: 从网上也找了一些类,还是不行,不是转换不了,就是连 英文字母都给编码了
{
byte[] _Value =Encoding.GetEncoding("GB2312").GetBytes(p_Text); return "%"+BitConverter.ToString(_Value).Replace('-','%');
}
<!--#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>
Console.WriteLine(BitConverter.ToString(System.Text.Encoding.GetEncoding("gb2312").GetBytes("品牌(七彩虹)")).Replace("-", "%"));
"(" ")" 本来就不需要UrlEncode,因为在Url串里面它们不是特殊字符 -.- ,这类基础问题都需要2天?
如果为了严谨可以使用那么就对包括AscII的字符都要Encode,那么把英文字母Encode了也是很正常的。
{
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*/
你的先要搞清楚,哪些是HTML中的特殊字符?他们的转义字符是哪些?
哪些是URL中的特殊字符?他们的转义字符是哪些?这种基础知识都没搞懂,就来做程序开发迟早是要还债的。