在實際開發中,我們可能會遇到路徑編碼解碼的問題,下面總結了一下:
PHP中:
1、urlencode(編碼),urldecode(解碼)
$a = urlencode('http://www.baidu.com?name=test&query=字母'); echo $a //http%3A%2F%2Fwww.baidu.com%3Fname%3Dtest%26query%3D%E5%AD%97%E6%AF%8D
2、rawurlencode、rawurldecode
這個函數跟上面的大部分一模一樣,就一點不同:對空格的處理,urlencode處理成'+',rawurlencode處理成'%20'
注意:編碼和解碼函數是成對的,用哪個函數編碼,就要用它對應的解碼函數解碼,不能混用。
JavaScript:
3、encodeURI 和 decodeURI
原理:返回編碼為有效的統一資源標識符 (URI) 的字符串,不會被編碼的字符:! @ # $ & * ( ) = : / ; ? + '
encodeURI('http://www.baidu.com?name=test&query=百度');
//http://www.baidu.com?name=test&query=%E7%99%BE%E5%BA%A6
4、encodeURIComponent 和 decodeURIComponent
原理:對URL的組成部分進行個別編碼,而不用於對整個URL進行編碼,一般只用於路徑里某個參數編碼
encodeURIComponent('http://www.baidu.com?name=test&query=百度');
//http%3A%2F%2Fwww.baidu.com%3Fname%3Dtest%26query%3D%E7%99%BE%E5%BA%A6
