JS三個編碼函數和net編碼比較
總結
1、escape、encodeUri、encodeUriComponent均不會對數字、字母進行編碼。
2、escape:對某些字符(如中文)進行unicode編碼,變為十六進制數倒序輸出;現已棄用。
3、encodeUri:目的是對完整Uri進行UTF8編碼十六進制輸出,因為完整的Uri是可以擁有/?#字符的,所以這些字符不會被編碼。
4、encodeUriComponent:目的是對Uri中的參數部分進行UTF8編碼十六進制輸出。
5、escape棄用,encodeUri編碼作用作用顯得很窄,Uri編碼大多數場合是因為參數部分有特殊字符?/,所以基本上就用encodeUriComponent對參數部分進行編碼就行了。
6、.net中的System.Web.HttpUtility.UrlEncode和encodeUriComponent作用一樣編碼也一樣,可以互相編碼和解碼的。
瀏覽器中JS的三個編碼函數和.net中的System.Web.HttpUtility.UrlEncode是否和系統默認編碼有關?
上面提到的函數所使用的編碼,我並沒有找到文檔來直接支持我的觀點,我所說的都是我試出來的。我不禁要懷疑,它們使用的編碼也許和我系統的默認編碼有關。
系統默認編碼是GB2312,和UTF8、unicode沒有關系,由此可見,瀏覽器中JS的三個編碼函數和.net中的System.Web.HttpUtility.UrlEncode中使用的編碼是固定的。