項目中有一個接口是用GET方法接收參數的,測試的時候發現當URL的參數中出現 + 號的時候,傳到後端 + 號全都變成了空格了。
然後從網上找到了原因:URL參數中是不能出現+ % # & = ? /
等特殊字符的,因爲這些字符在URL中有默認的含義,比如&
在URL中表示參數間的分隔符,如果不將&
轉義而直接放在GET請求的參數裏,後端的Tomcat就會以這個&
爲分隔符將參數拆分掉。
如果要傳遞這些特殊字符給後端,需要將它們轉義。轉碼的格式爲:%加字符的ASCII碼,即一個百分號%,後面跟對應字符的ASCII(16進制)碼值。例如 +號的編碼值是"%2B"。
下表中列出了一些URL特殊符號及編碼:
特殊字符 | 在URL中的默認含義 | 轉義碼 |
---|---|---|
+ | URL 中+號表示空格 | %2B |
空格 | %20 | |
/ | 分隔目錄和子目錄 | %2F |
? | 分隔實際的 URL 和參數 | %3F |
% | 指定特殊字符 | %25 |
# | 表示書籤 | %23 |
& | URL 中指定的參數間的分隔符 | %26 |
= | URL 中指定參數的值 | %3D |