一次在項目中,發送一個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