轉!!URL 傳+號到後台變空格問題解決方案

來源:互聯網
上載者:User

標籤:

網上很多解決方案,但是前提是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 傳+號到後台變空格問題解決方案

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.