公開日: 2009年07月07日(Tue)
JavaScript でURLエンコードする方法を何度も何度も調べてる気がするので、いい加減メモる。
groundwalker.com さんが、詳しく比較してくださっている。
エンコードする関数には、 escape()
, encodeURI()
, encodeURIComponent()
の3種類、それぞれ対応するデコード関数 unescape()
, decodeURI()
, decodeURIComponent()
が用意されている。
次の文字列は、http://www.aaa.jp/?text=あ ああ
を escape()
した結果。(JavaScriptがONじゃないと見えません)
同じく encodeURI()
した結果。(JavaScriptがONじゃないと見えません)
同じく encodeURIComponent()
した結果。(JavaScriptがONじゃないと見えません)
次は、同じ文字列を PHPの rawurlencode()
に通した結果。
http%3A%2F%2Fwww.aaa.jp%2F%3Ftext%3D%E3%81%82%20%E3%81%82%E3%81%82
JavaScript の3種の関数のうち、PHP の rawurlencode() と同じ結果が欲しいなら、encodeURIComponent()
を使えばよいらしい。(RFC 1738 規格に基づくと書かれている)
ちなみに、PHPの urlencode() は、スペースが %20
ではなく +
に変換されるところが異なる。
http%3A%2F%2Fwww.aaa.jp%2F%3Ftext%3D%E3%81%82+%E3%81%82%E3%81%82
公開日: 2009年07月07日(Tue)