違いがあるのは分かっていたけど、今までぼんやりしていた JavaScript と組み合わせる際の注意点がちょっと分かった気がする。

要は \x20 の空白と + の扱いの話で、

  • JavaScript の decode では + -> \x20 変換はしない
  • JavaScript に渡す際は \x20 -> %20 変換を行う

ということかな。組み合わせ的には以下で正しく動いている様子。

PHPrawurlencode()
JavaScriptdecodeURIComponent()

今回は逆方向は試してないけど、恐らく同じ扱いでいいと思う。

More