標籤:
網上很多解決方案,但是前提是get請求(或者是post請求後面追加的參數),讓我試了很久(我是post),沒成功!引以為戒!!
今天在調試用戶端向伺服器傳遞參數時,參數中的“+”全部變成了空格,原因是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)
{
return escape(sStr).replace(/\+/g, ‘+‘).replace(/\"/g,‘"‘).replace(/\‘/g, ‘‘‘).replace(/\//g,‘/‘);
}
還一種方案 --我用的
encodeURIComponent(querySql);
strURL = "search.do?param=" + encodeURIComponent(str);
普通的傳參出現亂碼問題,可使用encodeURI來轉譯,它會轉譯成UTF-8的格式;
strURL = "search.do?param=" + encodeURI(str);
轉!!URL 傳+號到後台變空格問題解決方案