問題:2個函數都是針對字符串轉義使其適合做文件名。該用哪個?哪個更標准?
結論:
rawurlencode遵守是94年國際標准備忘錄RFC 1738,
urlencode實現的是傳統做法,和上者的主要區別是對空格的轉義是'+'而不是'%20'
javascript的encodeURL也是94年標准,
而javascript的escape是另一種用"%xxx"標記unicode編碼的方法。
推薦在PHP中使用用rawurlencode。棄用urlencode
樣例
source:
超級無敵的人sadha sajdh數據樣本sdls fhejrthcxzb.file.jpeg
PHP urlencode:
%E8%B6%85%E7%BA%A7%E6%97%A0%E6%95%8C%E7%9A%84%E4%BA%BAsadha+sajdh%E6%95%B0%E6%8D%AE%E6%A0%B7%E6%9C%ACsdls+fhejrthcxzb.file.jpeg
PHP rawurlencode:
%E8%B6%85%E7%BA%A7%E6%97%A0%E6%95%8C%E7%9A%84%E4%BA%BAsadha%20sajdh%E6%95%B0%E6%8D%AE%E6%A0%B7%E6%9C%ACsdls%20fhejrthcxzb.file.jpeg
Javascript encodeURI:
%E8%B6%85%E7%BA%A7%E6%97%A0%E6%95%8C%E7%9A%84%E4%BA%BAsadha%20sajdh%E6%95%B0%E6%8D%AE%E6%A0%B7%E6%9C%ACsdls%20fhejrthcxzb.file.jpeg
Javascript escape:
%u8D85%u7EA7%u65E0%u654C%u7684%u4EBAsadha%20sajdh%u6570%u636E%u6837%u672Csdls%20fhejrthcxzb.file.jpeg