URL 傳+號到後臺變空格問題解決方案

今天在調試客戶端向服務器傳遞參數時,參數中的「+」所有變成了空格,緣由是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);

相關文章
相關標籤/搜索