等号 (=) の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のクエリパラメータとして渡す場合。

Try It — URL Encoder

フルツールを開く