等号 (=) のURLエンコード
等号 (=) を%3DにURLエンコードする方法を解説。クエリパラメータで=を含む値やBase64文字列を渡す際に必須の知識です。無料ツール付き。
Character
=
Encoded
%3D
詳細な説明
等号(=)はURLにおいてクエリ文字列内でパラメータのキーと値を区切る予約文字です。パラメータ値の中にリテラルの等号が現れる場合、URLパーサーが構造を誤って解釈しないよう%3Dにエンコードする必要があります。
percent-encoding形式: %3Dは等号を表します(ASCIIコード61、16進数で0x3D)。これにより、パーサーはこの=をキーと値の区切りではなくデータの一部として扱います。
最も問題になるケース: Base64エンコード文字列は頻繁に末尾に1つまたは2つの=パディング文字を含みます。エンコードせずにBase64文字列をクエリパラメータとして渡すと、末尾の=記号がパラメータ解析を破壊します。
例えば、Base64文字列SGVsbG8=を/api?data=SGVsbG8=として渡すと、キーdataの値SGVsbG8の後に不正なパラメータが続くと解析されます。正しい形式は/api?data=SGVsbG8%3Dです。
JavaScriptでの動作:
encodeURIComponent("SGVsbG8=") // "SGVsbG8%3D"
encodeURI("data=SGVsbG8=") // "data=SGVsbG8=" (= をエンコードしない)
// URLSearchParams は自動的に処理する
const params = new URLSearchParams({ data: "SGVsbG8=" });
params.toString() // "data=SGVsbG8%3D"
よくあるシナリオ:
- Base64エンコードされたトークンやペイロードをURLパラメータとして渡す場合
- 数式をURLに埋め込む場合(例:
equation=x=5) - 独自のキーバリューペアを含むURLフラグメントを転送する場合
- トークンに
=パディングが含まれる可能性のあるOAuth・認証フロー
落とし穴: 多くの開発者がBase64の出力に=文字が含まれることを忘れがちです。JWTやAPIキーをURLに埋め込む際は、必ず値をエンコードしてください。あるいは、+を-に、/を_に置き換え、=パディングを完全に除去するBase64urlエンコード(RFC 4648 Section 5)を使用すれば、値を本質的にURL安全にできます。
ユースケース
Base64エンコードされた認証トークンや暗号化ペイロードをAPIリクエストやリダイレクトURLのクエリパラメータとして渡す場合。