使用encodeURIComponent
如str="a+b";
url="sql_str.jsp?sql="+str;
要改成:
url="sql_str.jsp?sql="+encodeURIComponent(str);
URL傳值帶加號“+”的問題的解決方法
今天在調試客戶端向服務器傳遞參數時,參數中的“+”全部變成了空格,原因是URL中默認的將“+”號轉義了。
解決方法如下:
方法一、修改客戶端,將客戶端帶“+”的參數中的“+”全部替換爲“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){
returnescape(sStr).replace(/\+/g, '+').replace(/\"/g,'"').replace(/\'/g,''').replace(/\//g,'/');
}