關(guān)于處理GET方式提交的含有特殊字符的參數(shù)
更新時(shí)間:2006年08月11日 00:00:00 作者:
曾經(jīng)有一位朋友遇到這樣一個(gè)問題,一產(chǎn)品名稱為A&T Plastic,在產(chǎn)品列表中就產(chǎn)生了這樣的一個(gè)聯(lián)接<a href="product.asp?name=A&T Plastic">A&T Plastic</a>,在服務(wù)器端接收此參數(shù)的時(shí)候怎么也無法接收到準(zhǔn)確的產(chǎn)品名。
當(dāng)時(shí)就問我,如何解決,也許是當(dāng)時(shí)忙吧,隨口告訴他用HTMLENCODE方法,對(duì)方試告訴并沒有能解決這個(gè)問題。我當(dāng)時(shí)沒有再給予回答,偶爾想起實(shí)在是對(duì)不起,我講錯(cuò)了。今日閑暇就整理了一下如何處理GET方式提交的含有特殊字符的參數(shù),以表內(nèi)心的愧疚。
特殊特殊字符的含義
————————————————————————————
字符 特殊字符的含義 URL編碼
# 用來標(biāo)志特定的文檔位置 %23
% 對(duì)特殊字符進(jìn)行編碼 %25
& 分隔不同的變量值對(duì) %26
+ 在變量值中表示空格 %2B
\ 表示目錄路徑 %2F
= 用來連接鍵和值 %3D
? 表示查詢字符串的開始 %3F
當(dāng)鍵值中含有以上列表中的一些字符時(shí)就無法準(zhǔn)確的接收其中的值。
<!--文件名為01.asp-->
<%
'定義含有特殊字符的字符串
str="parameter=#%&+\=?value</html>"
'用URLEncode方法進(jìn)行編碼
strurlencode=server.URLEncode(str)
'用HTMLEncode方法進(jìn)行編碼
strhtmlencode=server.HTMLEncode (str)
'顯示所有的querysting字符
Response.Write "<b>QueryString:<b>"
Response.Write Request.QueryString
'顯示傳遞的參數(shù)
Response.Write "
<b>Parameter is:</b>" & str &"
"
Response.Write "<b>QueryParameter=</b>"
Response.Write Request.QueryString ("str")
%>
<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
<TITLE></TITLE>
</HEAD>
<BODY>
<P><a href="01.asp?str=<%=strurlencode%>">Str UrlEncode Method</a></P>
<P> </P>
<P><a href="01.asp?str=<%=strhtmlencode%>">Str HtmlEncode Method</a></P>
</BODY>
</HTML>
顯示結(jié)果
QueryString:
Parameter is:parameter=#%&+\=?value
QueryParameter=
Str UrlEncode Method
Str HtmlEncode Method
點(diǎn)擊連接1,結(jié)果
QueryString:str=parameter%3D%23%25%26%2B%5C%3D%3Fvalue%3C%2Fhtml%3E
Parameter is:parameter=#%&+\=?value
QueryParameter=parameter=#%&+\=?value
Str UrlEncode Method
Str HtmlEncode Method
此時(shí)我們發(fā)現(xiàn)好象參數(shù)值中的</html>沒有能正確接收到,當(dāng)我們查看原代碼的時(shí)候就會(huì)發(fā)現(xiàn)其實(shí)已經(jīng)準(zhǔn)確的接收到了,原因是“</html>”是標(biāo)準(zhǔn)html tag ,經(jīng)過瀏覽器解釋后就不會(huì)顯示出來了。
點(diǎn)擊連接2,結(jié)果
QueryString:str=parameter=
Parameter is:parameter=#%&+\=?value
QueryParameter=parameter=
Str UrlEncode Method
Str HtmlEncode Method
此時(shí)就會(huì)發(fā)現(xiàn)在#后面沒有能正確接收到,而是被解釋為錨點(diǎn)的開始,在"#"后面的為錨的名稱。
結(jié)論:在含有以上列表中具有特殊功能的特殊字符的字符串,作為參數(shù)用GET方式傳遞時(shí),只需要用URLENCODE方法處理一下就可以拉。如果不想讓瀏覽者看到含后HTML TAG的字符串的具體值值是,我們可以用HTMLENCODE處理一下。
PHP中用函數(shù)urlencode()就可以拉,這里就不在舉例了。
當(dāng)時(shí)就問我,如何解決,也許是當(dāng)時(shí)忙吧,隨口告訴他用HTMLENCODE方法,對(duì)方試告訴并沒有能解決這個(gè)問題。我當(dāng)時(shí)沒有再給予回答,偶爾想起實(shí)在是對(duì)不起,我講錯(cuò)了。今日閑暇就整理了一下如何處理GET方式提交的含有特殊字符的參數(shù),以表內(nèi)心的愧疚。
特殊特殊字符的含義
————————————————————————————
字符 特殊字符的含義 URL編碼
# 用來標(biāo)志特定的文檔位置 %23
% 對(duì)特殊字符進(jìn)行編碼 %25
& 分隔不同的變量值對(duì) %26
+ 在變量值中表示空格 %2B
\ 表示目錄路徑 %2F
= 用來連接鍵和值 %3D
? 表示查詢字符串的開始 %3F
當(dāng)鍵值中含有以上列表中的一些字符時(shí)就無法準(zhǔn)確的接收其中的值。
<!--文件名為01.asp-->
<%
'定義含有特殊字符的字符串
str="parameter=#%&+\=?value</html>"
'用URLEncode方法進(jìn)行編碼
strurlencode=server.URLEncode(str)
'用HTMLEncode方法進(jìn)行編碼
strhtmlencode=server.HTMLEncode (str)
'顯示所有的querysting字符
Response.Write "<b>QueryString:<b>"
Response.Write Request.QueryString
'顯示傳遞的參數(shù)
Response.Write "
<b>Parameter is:</b>" & str &"
"
Response.Write "<b>QueryParameter=</b>"
Response.Write Request.QueryString ("str")
%>
<HTML>
<HEAD>
<META NAME="GENERATOR" Content="Microsoft Visual Studio 6.0">
<TITLE></TITLE>
</HEAD>
<BODY>
<P><a href="01.asp?str=<%=strurlencode%>">Str UrlEncode Method</a></P>
<P> </P>
<P><a href="01.asp?str=<%=strhtmlencode%>">Str HtmlEncode Method</a></P>
</BODY>
</HTML>
顯示結(jié)果
QueryString:
Parameter is:parameter=#%&+\=?value
QueryParameter=
Str UrlEncode Method
Str HtmlEncode Method
點(diǎn)擊連接1,結(jié)果
QueryString:str=parameter%3D%23%25%26%2B%5C%3D%3Fvalue%3C%2Fhtml%3E
Parameter is:parameter=#%&+\=?value
QueryParameter=parameter=#%&+\=?value
Str UrlEncode Method
Str HtmlEncode Method
此時(shí)我們發(fā)現(xiàn)好象參數(shù)值中的</html>沒有能正確接收到,當(dāng)我們查看原代碼的時(shí)候就會(huì)發(fā)現(xiàn)其實(shí)已經(jīng)準(zhǔn)確的接收到了,原因是“</html>”是標(biāo)準(zhǔn)html tag ,經(jīng)過瀏覽器解釋后就不會(huì)顯示出來了。
點(diǎn)擊連接2,結(jié)果
QueryString:str=parameter=
Parameter is:parameter=#%&+\=?value
QueryParameter=parameter=
Str UrlEncode Method
Str HtmlEncode Method
此時(shí)就會(huì)發(fā)現(xiàn)在#后面沒有能正確接收到,而是被解釋為錨點(diǎn)的開始,在"#"后面的為錨的名稱。
結(jié)論:在含有以上列表中具有特殊功能的特殊字符的字符串,作為參數(shù)用GET方式傳遞時(shí),只需要用URLENCODE方法處理一下就可以拉。如果不想讓瀏覽者看到含后HTML TAG的字符串的具體值值是,我們可以用HTMLENCODE處理一下。
PHP中用函數(shù)urlencode()就可以拉,這里就不在舉例了。
相關(guān)文章
在ASP中不用模板生成HTML靜態(tài)頁直接生成.html頁面
有沒有辦法不用模板,如一個(gè)正常的htmer.asp頁面,直接生成為htmer.html頁面呢?當(dāng)然是可以的,而且非常簡單,今天就教大家在ASP中不用模板生成HTML靜態(tài)頁的方法2014-09-09IIS訪問ASP頁面時(shí)報(bào)錯(cuò)The requested resource is in use.的解決辦法
IIS訪問ASP頁面時(shí)報(bào)錯(cuò)The requested resource is in use.的解決辦法...2007-04-04.NET中實(shí)現(xiàn)高精度定時(shí)器的思路
一個(gè)定時(shí)器至少需要考慮三部分功能:計(jì)時(shí)、等待、觸發(fā)模式。計(jì)時(shí)是進(jìn)行時(shí)間檢查,調(diào)整等待的時(shí)間;等待則是用來跳過指定的時(shí)間間隔。觸發(fā)模式是指定時(shí)器每次Tick的時(shí)間固定還是每次定時(shí)任務(wù)時(shí)間間隔固定,本文將討論高精度定時(shí)器實(shí)現(xiàn)的思路,一起看看吧2023-12-12Server.Execute方法執(zhí)行指定的ASP程序
Server.Execute方法執(zhí)行指定的ASP程序...2007-09-09ASP模仿google suggest風(fēng)格實(shí)現(xiàn)下拉菜單效果
這篇文章主要介紹了ASP模仿google suggest風(fēng)格實(shí)現(xiàn)下拉菜單效果,需要的朋友可以參考下2015-09-09asp MYSQL出現(xiàn)問號(hào)亂碼的解決方法
用asp讀取MYSQL數(shù)據(jù)庫出現(xiàn)亂碼,讀取到的漢字都是????2008-08-08