JavaScript中有三個URL函數編碼,他們都是全局的;
區別在於:
encodeURI只將URI中的空格和非AscII字符進行編碼,編碼後的URI可以正常訪問(ajax中文問題可以使用encodeURI對url進行編碼)
encodeURIComponent 除了將所有的非ASCII字符編碼外,還將一些特殊字符進行編碼,如?#:,&等,編碼後的URI不可訪問
escape 功能和encodeURIComponent功能一樣,但是編碼後的URI是可以訪問的,對使用沒有任何影響
例如:
- var url = 'http://www.oschina.net/project/search?q=tomcat';
- var results = ['URI: ' + url];
- // escape
- results.push('escape: ' + escape(url));
- // encodeURI
- results.push('encodeURI: ' + encodeURI(url));
- // encodeURIComponent
- results.push('encodeURIComponent: ' + encodeURIComponent(url));
- document.write(results.join(''));
- /*
- URI: http://labs.phpz.org/jstest/null.html?a=TEST1&b=hello world#
- escape: http%3A//labs.phpz.org/jstest/null.html%3Fa%3DTEST1%26b%3Dhello%20world%23
- encodeURI: http://labs.phpz.org/jstest/null.html?a=TEST1&b=hello%20world#
- encodeURIComponent: http%3A%2F%2Flabs.phpz.org%2Fjstest%2Fnull.html%3Fa%3DTEST1%26b%3Dhello%20world%23
- */