網上很多解決方法,但是前提是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);