今天在閱讀開源代碼時(shí)發(fā)現(xiàn)了一個(gè)URL的編碼函數(shù):rawurlencode(),以前一直沒有注意過,因?yàn)樵谄綍r(shí)的開發(fā)上主要使用的是 urlencode(),故專門研究了一番.
其實(shí)這兩個(gè)函數(shù)的區(qū)別很簡單,它們兩個(gè)都會(huì)把URL中的非英文字符進(jìn)行轉(zhuǎn)義,替換成"%"后跟兩位十六進(jìn)制數(shù),不同的是:rawurlencode 遵守是94年國際標(biāo)準(zhǔn)備忘錄RFC 1738,對(duì)空格的轉(zhuǎn)義是'%20′;而urlencode的編碼實(shí)現(xiàn)的是傳統(tǒng)做法,和POST表單數(shù)據(jù)一樣會(huì)把空格轉(zhuǎn)義成"+"號(hào).
舉個(gè)例子:
如果URL地址源的形式是:http://www.phpfensi.com 編碼區(qū)別
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
從這個(gè)例子中可以很明顯的看出二者的區(qū)別,如果我們想給編碼的URL解碼的話,可以使用這兩個(gè)函 數(shù):rawurldecode(),urldecode(),在實(shí)際的開發(fā)中為了避免URL格式不統(tǒng)一,還是推薦大家使用rawurlencode()來進(jìn)行URL的編碼.
同樣的操作在Javascript也有一些區(qū)別,大家可以參考:javascript的URL編碼與反編碼,里面講述了Javascript中escape(),encodeURI(),encodeURIComponent()的編碼使用.
新聞熱點(diǎn)
疑難解答
圖片精選