我正在使用一個URL打開一個html頁面,並且我正在使用查詢字符串與頁面url一起發送數據。 ex:abc.html?firstParameter = firstvalue & seconedParameter = seconedvalue 問題是,如果參數中的「firstvalue」或「secondvalue」包含 特殊字符如#,(,),%,{,那麼我的url構造不好。在這種情況下,url無法驗證。 我正在做這一切的JavaScript。任何機構都可以幫我解決這個問題。轉義URL中的特殊字符
回答
你有3種選擇:
escape() will not encode: @*/+
encodeURI() will not encode: [email protected]#$&*()=:/,;?+'
encodeURIComponent() will not encode: ~!*()'
但在你的情況,如果你想要一個URL傳遞到其他頁面的GET參數,你應該使用逃生或encodeURIComponent方法,但並非是encodeURI。
爲了安全起見,確保您已經轉義了RFC 1738和RFC 3986中指定的所有保留字符,您應該使用encodeURIComponent,escape和替換星號('*')的組合:
encoded = encodeURIComponent(parm).replace(/[!'()]/g, escape).replace(/\*/g, "%2A");
[說明] 儘管RFC 1738:統一資源定位器(URL)指定*,」,(和)字符可能被留在URL未編碼,
因此,僅!字母數字,特殊字符「$ -_。+!*'(),」和 用於其保留目的的保留字符可用於在URL中未編碼的 。
RFC 3986,第12-13頁指出這些特殊字符被保留爲子分隔符。
保留= GEN-delims /子delims
GEN-delims = 「:」 「?」/ 「/」/ /「#」/「[」/「]」/「@」
sub-delims =「!」 /「$」/「&」/「'」/「(」/「)」 /「*」/「+」/「,」/「; /「=」
escape()函數已被棄用,但可用於對感嘆號,單引號,左括號和右括號進行URL編碼。而且由於星號是否必須在URL中進行編碼存在一些不明確的地方,並且它不會對編碼造成傷害,所以您可以明確地使用類似replace()函數調用的方式進行編碼。 [請注意,escape()函數被傳遞爲second parameter to the first replace() function call。如此處所用,替換爲!,',(或)的每個匹配特殊字符替換調用escape()函數一次,並且escape僅返回該字符的「轉義序列」以替換,該轉義序列將任何轉義字符與其他字符重新組合片段]
另見'https://stackoverflow.com/questions/6533561/urlencode-the-asterisk-star-character'
而且雖然有些網站甚至已經確定的asterkisk(*)作爲下RFC3986保留字符,它們不包括在their URL component encoding tool。
非編碼URL PARMS:
parm1=this is a test of encoding [email protected]#$%^&*()'
parm2=note that * is not encoded
編碼的URL PARMS:
parm1=this+is+a+test+of+encoding+%21%40%23%24%25%5E%26*%28%29%27
parm2=note+that+*+is+not+encodeds+not+encoded
- 1. Watir:轉義特殊字符
- 2. C++ - 轉義特殊字符
- 3. XML轉義特殊字符
- 4. 轉義特殊字符
- 5. 轉義特殊字符
- 6. 轉義特殊字符
- 7. elasticseach特殊字符轉義
- 8. JSTL轉義特殊字符
- 9. python轉義特殊字符
- 10. Javascript特殊轉義字符
- 11. 轉義特殊字符
- 12. URL中的特殊字符
- 13. 轉義to_tsquery中的特殊字符
- 14. 轉義XPATH中的特殊字符
- 15. c中的特殊轉義字符#
- 16. 轉義SQL中的特殊字符
- 17. 轉義cmd中的特殊字符
- 18. xml中的Javascript轉義特殊字符
- 19. Python中的特殊字符轉義argv
- 20. 轉義中的特殊字符
- 21. 轉義在URL中使用的特殊字符(ø,æ)
- 22. 在文本中轉義特殊字符
- 23. 在sqlite中轉義特殊字符
- 24. 在AJAX中轉義XML特殊字符
- 25. 在Ruby中轉義特殊字符
- 26. 在Python中轉義3.3.2特殊字符
- 27. Password中的特殊字符將URL轉換爲字符串
- 28. wget的特殊字符轉義
- 29. TinyMCE的轉義一些特殊字符
- 30. MySQL的轉義特殊字符
感謝名單約傑什,請你能告訴我如何在JavaScript中使用這些方法。我可以不必調用這些方法,如URL.escape();它的工作原理是 – ARV
thanx yogesh。 – ARV