URL傳值帶加號「+」的問題的解決方法

分類: C#基礎
使用encodeURIComponent
如str="a+b";
url="sql_str.jsp?sql="+str;
要改爲:
url="sql_str.jsp?sql="+encodeURIComponent(str);

URL傳值帶加號「+」的問題的解決方法
今天在調試客戶端向服務器傳遞參數時,參數中的「+」所有變成了空格,緣由是URL中默認的將「+」號轉義了。
解決方法以下:
方法1、修改客戶端,將客戶端帶「+」的參數中的「+」所有替換爲‍「2B%」,這樣參數傳到服務器端時就能獲得「+」了。
方法2、修改服務器端,將空格替換爲「+」,這種方式只適用於參數中有‍「+」沒有空格的狀況。
例子:
String a = reuqest.‍getParameter("clientStr")‍.replace(' ','+');
若是客戶端爲clientStr=test+OK,那麼a的值爲test+OK;
方法3、修改服務器端,將獲取參數的方法由‍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)
{
    return escape(sStr).replace(/\+/g, '+').replace(/\"/g,'"').replace(/\'/g, ''').replace(/\//g,'/');
}
相關文章
相關標籤/搜索