エンコードの落とし穴
タイトルの通り
値をURLのパラメータで渡すにあたって、文字列を直書きはよろしくないだろうということで、
エンコードをしたものをURLに追加しました。
そこでの失敗例です。
間違っているのに出来てしまう
間違っているのにエラーになるわけでもないため発見が遅れました。
今回は乗せたかった値は以下
「イベント名=〇〇〇・〇〇〇のための就活セミナー」
エンコードは以下サイトを利用
https://tech-unlimited.com/urlencode.html
https://www.tagindex.com/cgi-lib/encode/url.cgi
結果
「イベント名=〇〇〇・〇〇〇のためのオンラインセミナー」
という値が渡されていました。
原因
エンコードの際
「イベント名=〇〇〇・〇〇〇のための就活セミナー」
をすべてエンコードにしていたため。
対処
エンコードを
・「イベント名」
・「〇〇〇・〇〇〇のための就活セミナー」
に分けてエンコード
パラメータへの記述は以下
(「イベント名」をエンコードした文字列)=(「〇〇〇・〇〇〇のための就活セミナー」をエンコードした文字列)
所感
=(イコール)を含めてもエンコードが出来てしまい、パラメータに乗っけても微妙な違いだけで普通に値を渡せてしまう。という罠でした。
=の両端(オペランド?)を別々にエンコードして=(イコール)で繋ぐという一手間で解決となりました。
なぜこのような変換になるのか、というところまでは分からないので、エンコードについてもその内調べられればと思います。