SomeeLab.tools

URL エンコード・デコード

クエリの値ひとつ、あるいはURL全体をパーセントエンコードし、元に戻せます。登録不要、ブラウザ上で動きます。

クエリの値ひとつに使います。& = ? / # まで変換するので、値がパラメータの外にはみ出しません。

値ひとつか、URL全体か

2つのモードの違いは、&=?/# に手を付けるかどうかです。

値ひとつはこれらもすべて変換します。検索語やリダイレクト先のように、パラメータの中に入る値に使います。?next= に続けるURLをこのモードで変換しないと、中の & が新しいパラメータの始まりとして読まれ、値が途中で切れます。

URL全体は構造を作る文字を残します。すでに完成したURLで、空白や日本語だけを整えたいときに使います。このモードなら https:// のスラッシュもそのまま残るので、リンクは動いたままです。

迷ったときの基準はひとつです。URLの一部を組み立てているなら値ひとつ、すでにURLを持っているならURL全体です。

空白は +%20

どちらも見かけますが、使う場所が違います。%20 はURLのどこでも通じる標準の書き方です。+ はHTMLフォームがデータを送るときの古い規則で、クエリ文字列の中でだけ空白として解釈されます。

パスの中の + は空白ではなく、ただのプラス記号です。ファイル名にプラスを含むURLをフォームの規則でデコードすると、名前が変わってしまいます。このツールは標準に従って空白を %20 にします。

二重にエンコードされた値

デコードした結果に %2520%253A が残っていたら、値が2回エンコードされています。% 自体が %25 に変換された跡です。

たいていは、すでにエンコード済みの値をコードがもう一度エンコードして起きます。もう一度デコードすれば元に戻りますが、本当の解決はエンコードする場所を決めることです。値をURLに差し込む地点で一度だけエンコードし、その前後では元の文字列のまま受け渡します。

変換されない文字

A-Za-z0-9-._~ は仕様が安全と定めた文字なので、そのまま残ります。これらが変わらないのは不具合ではありません。

日本語はUTF-8で1文字3バイトなので、%E3%81%82 のように3つの組になります。エンコードしたURLが急に長く見えるのはこのためです。