URL中特殊字元處理

2021-07-24 03:15:18 字數 1321 閱讀 6547

如果你的表單使用get方法提交,並且提交的引數中有「&」等特殊符的話,如果不做處理,在service端就會將&後面的作為另外乙個引數來看待。例如 

表單的action為list.jsf?act=go&state=5 

則提交時通過request.getparameter可以分別取得act和state的值。 

如果你的本意是act='go&state=5'這個字串,那麼為了在服務端拿到act的準確值,你必須對&進行轉義 

url轉義字元原理: 

將這些特殊的字元轉換成ascii碼,格式為:%加字元的ascii碼,即乙個百分號%,後面跟對應字元的ascii(16進製制)碼值。例如 空格的編碼值是"%20"。 

url特殊符號及對應的十六進製制值編碼:   

1. +  url 中+號表示空格 %2b   

2. 空格 url中的空格可以用+號或者編碼 %20   

3. /  分隔目錄和子目錄 %2f    

4. ?  分隔實際的 url 和引數 %3f    

5. % 指定特殊字元 %25    

6. # 表示書籤 %23    

7. & url 中指定的引數間的分隔符 %26    

8.= 

url中指定引數的值 %3d  

解決方法如下(以+號為例):

方法一、修改客戶端,將客戶端帶「+」的引數中的「+」全部替換為‍「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)   

url中包含特殊字元及處理辦法

問題 在spring boot中使用rest api風格呼叫介面,引數出現帶特殊字元的資料,如姓名xx.yy,或者,號分割的字串 例如 http localhost 8080 business joinbiz xx.yy http localhost 8080 business joinbiz x,...

URL 中文 特殊字元 亂碼處理

前提先了解瀏覽器解析url 關於不同瀏覽器對url編碼的分析 1.encodeuricomponent 與 encodeurl區別 encodeuri 該函式對傳入字串中的所有非 基本字元 mark字元和保留字元 進行轉義編碼 escaping 這些 用於分隔 uri 元件的標點符號 進行編碼 2....

url中特殊字元轉義

在前端向後端傳一些特定字元的時候有幾個特殊字元需要進行轉義 如果不進行編碼手動進行轉義可以對照下面 url中 號表示空格 2b 空格 url中的空格可以用 號或者編碼 20 url中分隔目錄和子目錄 2f url中分隔實際的url和引數 3f url中指定特殊字元 25 url中表示書籤 23 ur...