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


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM