url中特殊字符的處理

一次在項目中,發送一個get請求,參數包含「#」,結果,從包括‘#’以後的字符串都沒傳遞過去。
固然,試了一下‘&’,問題更大。
因此,都有哪些特殊字符須要作特殊處理呢?java

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

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

1. +     URL中+號表示空格 %2B   
2. 空格  URL中的空格能夠用+號或者編碼 %20   
3. /     分隔目錄和子目錄 %2F    
4. ?     分隔實際的 URL 和參數 %3F    
5. %     指定特殊字符 %25    
6. #     表示書籤 %23    
7. &     URL中指定的參數間的分隔符 %26    
8. =     URL中指定參數的值 %3D

解決方法:.net

str=str.replace(/\%/g,'%25').replace(/\#/g,'%23').replace(/\+/g,'%2B').replace(/\"/g,'%22').replace(/\'/g, '%27').replace(/\//g,'%2F').replace(' ','+').replace(/\?/g,'%3F').replace(/\&/g,'%26').replace(/\=/g,'%3D')

+號表示空格,+號又能以「%2B」表示,因此要看出效果,注意replace的順序。同理的還有‘%’,‘%’也須要處理,而其餘的字符處理以後都會包含‘%’,因此先處理‘%’,就能看到全部的處理以後的效果。code

參考文章:url特殊字符轉義及解決方法blog

相關文章
相關標籤/搜索