十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
要再前台也中想办法,我的解决方案是不用A标记,用js脚本,onclick=window.open()然后用escape()方法URL编码这样传递后 在后台代码中使用Server.UrlDecode()方法 对url进行解码
让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:域名注册、网站空间、营销软件、网站建设、拜城网站维护、网站推广。
'编码函数
Public Function URLEncode(ByRef strURL As String) As String
Dim I As Long
Dim tempStr As String
For I = 1 To Len(strURL)
If Asc(Mid(strURL, I, 1)) 0 Then
tempStr = "%" Right(CStr(Hex(Asc(Mid(strURL, I, 1)))), 2)
tempStr = "%" Left(CStr(Hex(Asc(Mid(strURL, I, 1)))), Len(CStr(Hex(Asc(Mid(strURL, I, 1))))) - 2) tempStr
URLEncode = URLEncode tempStr
ElseIf
(Asc(Mid(strURL, I, 1)) = 65 And Asc(Mid(strURL, I, 1)) = 90)
Or (Asc(Mid(strURL, I, 1)) = 97 And Asc(Mid(strURL, I, 1)) =
122) Then
URLEncode = URLEncode Mid(strURL, I, 1)
Else
URLEncode = URLEncode "%" Hex(Asc(Mid(strURL, I, 1)))
End If
Next
End Function
'解码函数
Public Function URLDecode(ByRef strURL As String) As String
Dim I As Long
If InStr(strURL, "%") = 0 Then URLDecode = strURL: Exit Function
For I = 1 To Len(strURL)
If Mid(strURL, I, 1) = "%" Then
If Val("H" Mid(strURL, I + 1, 2)) 127 Then
URLDecode = URLDecode Chr(Val("H" Mid(strURL, I + 1, 2) Mid(strURL, I + 4, 2)))
I = I + 5
Else
URLDecode = URLDecode Chr(Val("H" Mid(strURL, I + 1, 2)))
I = I + 2
End If
Else
URLDecode = URLDecode Mid(strURL, I, 1)
End If
Next
End Function
function URLEncode(nstr)
For i = 1 To Len(nstr)
nmid=Mid(nstr, i, 1)
nasc=Asc(nmid)
if nasc 0 Then
nhex=right("000" Hex(nasc),4)
URLEncode = URLEncode "%" Left(nhex, 2) "%" Right(nhex, 2)
elseif nmid=" " then
URLEncode = URLEncode "+"
Elseif (nasc = 48 And nasc = 57) Or (nasc = 65 And nasc = 90) Or (nasc = 97 And nasc = 122) Then
URLEncode = URLEncode nmid
Else
URLEncode = URLEncode "%" right("0" Hex(nasc),2)
End if
Next
end function
因为在程序中无法直接请求一个含有中文的url,所以,我们要对它编码,我们一般会编成gbk,utf-8,但是URL编码和gbk,utf-8编码的区别是,它不会把所有字符都编码,
它只对非字母数字的字符借助utf-8或gbk来编码。
编码时注意 不能把整个url路径传到UrlEncoder的decode方法中,因为它也会把反斜杠/和冒号:也编码,所以域名部分是不需要编码的,取出路径部分 /图片/华仔.jpg
通过以下两种方式都可以编码和解码
1、
用JS对URL进行编码和解码
JavaScript中有三个可以对字符串编码的函数,分别是:
escape,encodeURI,encodeURIComponent,相应3个解码函数:unescape,decodeURI,decodeURIComponent。
escape()
函数可对字符串进行编码
语法
escape(string)
encodeURI()
函数可把字符串作为
URI
进行编码。
语法
encodeURI(URIstring)
该方法的目的是对
URI
进行完整的编码,因此对以下在
URI
中具有特殊含义的
ASCII
标点符号,encodeURI()
函数是不会进行转义的:;/?:@=+$,#
encodeURIComponent()
函数
encodeURIComponent()
函数可把字符串作为
URI
组件进行编码。
escape()除了
ASCII
字母、数字和特定的符号外,对传进来的字符串全部进行转义编码,因此如果想对URL编码,最好不要使用此方法。而encodeURI()
用于编码整个URI,因为URI中的合法字符都不会被编码转换。encodeURIComponent方法在编码单个URIComponent(指请求参数)应当是最常用的,它可以讲参数中的中文、特殊字符进行转义,而不会影响整个URL。
2、用asp.net
对URL进行编码和解码
用System.Web.HttpUtility.UrlEncode编码:
string
tmp1
=
System.Web.HttpUtility.UrlEncode(".net技术",
System.Text.Encoding.GetEncoding("GB2312"));
string
tmp2
=
System.Web.HttpUtility.UrlEncode(".net技术",
System.Text.Encoding.UTF8);
用System.Web.HttpUtility.UrlDecode
或者
Server.UrlEncode
相应的进行解码
参考资料:
URL如何编码与解码