🥌

URLパラメータ内の '+' がスペースに変換されてしまう時の対処法

2021/07/01に公開

問題

URLパラメータに含まれている + が、 + として認識されない。

user+test@gmail.com => user test@gmail.com

このように、意図せずスペースに変換されてしまう時の対処法。

結論

+ の代わりに、 %2B を代用する。

user%2Btest@gmail.com => user+test@gmail.com

無事変換される。

原因

URLパラメータ(クエリストリング)内の+ は、スペースがURLエンコードされたものだから。

URLエンコードとは

URLに使ってダメな文字をURLに使って良い文字の組み合わせだけで表現する変換[1]

これにより、URL内で特別な意味を持つシンボルなどをエスケープさせる事ができる。

URLエンコードの結果だと認識された + がデコードされて、スペースになっていた。


他のシンボルの対応表

https://www.seil.jp/doc/index.html#tool/url-encode.html

脚注
  1. URLエンコード(英:URL encoding)とは ↩︎

Discussion