我一直不能理解,爲何urlencode與標準的RFC文檔有出入,因此對這個函數的用法一直心存疑慮。最近終於抽時間去檢查了下stackoverflow上面對這個問題的解釋,大概弄清楚了。 app
首先,對比一下兩個函數的不一樣: 函數
1)不予轉義的字符:urlencode(_-.)共三個,rawurlencode(-_.~)共四個,可見多了一個波浪線,前者會把波浪線轉換爲%7E。 post
2)特殊轉義的字符:urlencode會把空格轉換爲+,rawurlencode則不會。 編碼
urlencode實際上是post表單是用的編碼方法,也是application/x-www-form-urlencoded 的編碼方法。對於URL的編碼,更好的方法是符合RFC3986標準的rawurlencode,這也是js中的URIENCODE方法採用的標準。 url