今天在閱讀開源代碼時發現了一個URL的編碼函數:rawurlencode(),以前一直沒有注意過,因為在平時的開發上主要使用的是 urlencode(),故專門研究了一番.
其實這兩個函數的區別很簡單,它們兩個都會把URL中的非英文字符進行轉義,替換成"%"后跟兩位十六進制數,不同的是:rawurlencode 遵守是94年國際標準備忘錄RFC 1738,對空格的轉義是'%20′;而urlencode的編碼實現的是傳統做法,和POST表單數據一樣會把空格轉義成"+"號.
舉個例子:
如果URL地址源的形式是:http://www.phpfensi.com 編碼區別
rawurlencode($url):http%3A%2F%2Fityizhan.com%2FPHP%20%E7%BC%96%E7%A0%81%E5%8C%BA%E5%88%AB%2B
urlencode($url):http%3A%2F%2Fityizhan.com%2FPHP+%E7%BC%96%E7%A0%81%E5%8C%BA%E5%88%AB%2B
從這個例子中可以很明顯的看出二者的區別,如果我們想給編碼的URL解碼的話,可以使用這兩個函 數:rawurldecode(),urldecode(),在實際的開發中為了避免URL格式不統一,還是推薦大家使用rawurlencode()來進行URL的編碼.
同樣的操作在Javascript也有一些區別,大家可以參考:javascript的URL編碼與反編碼,里面講述了Javascript中escape(),encodeURI(),encodeURIComponent()的編碼使用.
新聞熱點
疑難解答