url特殊字元需轉義
空格換成加號(+)
正斜槓(/)分隔目錄和子目錄
問號(?)分隔url和查詢
百分號(%)制定特殊字元
#號指定書籤
&號分隔引數 轉義字元的原因:
如果你的表單使用get方法提交,並且提交的引數中有「&」等特殊符的話,如果不做處理,在service端就會將&後面的作為另外乙個引數來看待。例如
表單的action為list.jsf?act=go&state=5
則提交時通過request.getparameter可以分別取得act和state的值。
如果你的本意是act='go&state=5'這個字串,那麼為了在服務端拿到act的準確值,你必須對&進行轉義
url轉義字元原理:
將這些特殊的字元轉換成ascii碼,格式為:%加字元的ascii碼,即乙個百分號%,後面跟對應字元的ascii(16進製制)碼值。例如 空格的編碼值是"%20"。
url特殊符號及對應的十六進製制值編碼:解決方法如下(以+號為例):+ url 中+號表示空格 %2b
空格 url中的空格可以用+號或者編碼 %20
/ 分隔目錄和子目錄 %2f
? 分隔實際的 url 和引數 %3f
% 指定特殊字元 %25
# 表示書籤 %23
& url 中指定的引數間的分隔符 %26
= url 中指定引數的值 %3d
方法一、修改客戶端,將客戶端帶「+」的引數中的「+」全部替換為?「%2b」,這樣引數傳到伺服器端時就能得到「+」了。
方法二、修改伺服器端,將空格替換為「+」,這種方式只適用於引數中有?「+」沒有空格的情況。
例子:
string a = reuqest.getparameter("clientstr").replace(' ','+');
如果客戶端為clientstr=test+ok,那麼a的值為test+ok;
方法三、修改伺服器端,將獲取引數的方法由?reuqest.getparameter改為?request.getquerystring().substring(0),然後對得到的字串進行解析。
例子:
string a =request.getquerystring().substring(0);
如果客戶端為clientstr=test+ok,那麼a的值為?clientstr=test+ok,需要再解析一下,
a=a.?substring(10);得到a的值為?test+ok。
附:乙個js,用來轉義url中特殊字元的。
function urlencode(sstr)
如果你是用replace()時,使用name.replaceall("\\ ","%20");
st_fname=name.replaceall("\\ ","%20"); st_fname=dst_fname.replaceall("\\+","%2b");
URL引數的加號等特殊字元的處理
之前沒有遇見過,這樣的問題,所以都沒有考慮過。有乙個引數裡面有乙個 號,接收的時候 不見了,如address 上海黃埔 上海浦東 接收的時候變成 上海黃埔上海浦東 了。string url aspx?xx xx name contextwai.server.urlencode name haha c...
函式的引數傳值
函式的引數傳值主要分為 傳值引數,傳引用引數。1.傳值引數 當初始化乙個費引用型別的變數時,初始值被拷貝給變數。此時,對變數的改動不會改變和影響初值。int a 1 int b 2 swap a,b 則不能交換他們的值。但當時指標傳值時 指標傳值的行為和非引用型別傳值一樣,當執行指標拷貝時,拷貝的是...
C C 語言中引數的傳值問題
c c 語言中引數的傳值一直比較含糊,今天在網上看到三個面試題的詳解,感覺講的很好,就拿來記下,方便學習和記憶。1.考題一 程式 如下 void exchg1 int x,int y int tmp tmp x x y y tmp printf x d,y d n x,y void main int...