今天在調試客戶端向服務器傳遞參數時,參數中的「+」所有變成了空格,緣由是URL中默認的將「+」號轉義了。服務器
解決方法以下:spa
方法1、修改客戶端,將客戶端帶「+」的參數中的「+」所有替換爲「2B%」,這樣參數傳到服務器端時就能獲得「+」了。調試
方法2、修改服務器端,將空格替換爲「+」,這種方式只適用於參數中有「+」沒有空格的狀況。code
例子:orm
String a = reuqest.getParameter("clientStr").replace(' ','+');字符串
若是客戶端爲clientStr=test+OK,那麼a的值爲test+OK;get
方法3、修改服務器端,將獲取參數的方法由reuqest.getParameter改成request.getQueryString().substring(0),而後對獲得的字符串進行解析。string
例子:io
String a =request.getQueryString().substring(0);table
若是客戶端爲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,'/');
}
還一種方案
strURL = "search.do?param=" + encodeURIComponent(str);普通的傳參出現亂碼問題,可以使用encodeURI來轉譯,它會轉譯成UTF-8的格式;strURL = "search.do?param=" + encodeURI(str);