URLのエンコード・デコードって誰がやってるの?
Googleカレンダーリンクについて調査してる過程で疑問に思ったのでメモ。
前提として:URLには日本語が使えない。使えるのはアルファベットだけ。→ でも日本語を使いたいケースがあるので、アルファベットで日本語を表現できるようになっている。例:あ = %E3%81%82
エンコード:あ → %E3%81%82
デコード:%E3%81%82 → あ
✅ いつ誰がエンコードしてるのか確認してみた
1. コンソール上で戻り値を確認
code: .rb
event.<googleカレンダーリンクを生成するメソッド>
この時はまだエンコードされてない。
2. Webアプリケーション上でこのリンクをコピーすると、エンコードされてる。(クリックでなく、コピー)
Railsが必要に応じてURLエンコードをしてる。URLに含まれる特殊文字や空白は、エンコードされてURLの形式に適合する。
code: .rb
3. Webアプリケーション上でリンクをクリックして開くと、デコードされてる。
ブラウザがエンコードされた部分をデコードして、ユーザーが理解しやすい形式で表示している。
code: .rb
※ちなみに、デコードされたリンクを普通にコピペして見ると、エンコードされたリンクになる。
※エンコード時に空白は%20に変換されて、デコード時に +で表現されるので、アプリケーション上でリンクを踏んだ時には、リンクが壊れることなく正常に生成された。(リンクにそのまま空白が入ると=1の戻り値だとリンクが壊れちゃう)。↓タイトルに空白が入って、正常にリンクが生成されてることがわかる。
https://gyazo.com/3d7b8cc514cc5b1ef3918eecf0cc7e13