スペース文字のURLエンコード
スペース文字のURLエンコード方法を解説。%20と+の違い、それぞれの使い分け、よくある落とし穴を理解しましょう。ブラウザ上で動作する無料ツール付き。
Character
Encoded
%20 or +
詳細な説明
スペース文字はURLで最も頻繁にエンコードされる文字の一つであり、%20と+という2つの有効なエンコード形式があります。それぞれをいつ使うべきかを理解することは、正しいURLを構築するために不可欠です。
percent-encoding形式: %20はスペースの標準的なpercent-encoding表現です(ASCIIコード32、16進数で0x20)。これはRFC 3986で定義された一般的なURIエンコード形式です。
プラス記号形式: +はスペースの代替表現ですが、URLのクエリ文字列部分でのみ有効です。この慣例はHTMLのフォーム送信で定義されるapplication/x-www-form-urlencodedコンテンツタイプに由来します。
JavaScriptでの動作:
encodeURIComponent(" ")は%20を返すencodeURI("hello world")はhello%20worldを返すnew URLSearchParams({q: "hello world"}).toString()はq=hello+worldを返す
この違いは重要です。/search/hello worldのようなURLパスを構築する場合、%20を使わなければなりません:/search/hello%20world。パスセグメントで+を使うと、スペースではなくリテラルのプラス記号として解釈されます。
クエリパラメータでは、どちらの形式もサーバーに受け入れられるのが一般的です。ただし、POSTリクエストのフォームエンコードボディを構築する場合は+の慣例が標準です。ほとんどのサーバーサイドフレームワークはクエリ文字列で両方の形式を自動的にデコードしますが、一貫性を保つことで微妙なバグを回避できます。
よくある落とし穴: 開発者がURL全体にわたってスペースを手動で+に置換し、パスセグメントを破壊してしまうことがあります。構築するURLコンポーネントに応じた適切なエンコード関数を常に使用してください。パスには%20を生成するencodeURIComponent()を、フォームエンコード形式のクエリパラメータには+を生成するURLSearchParamsを使いましょう。
ユースケース
URLパラメータでの検索クエリのエンコード。例えば、https://google.com/search?q=hello+world のようなGoogle検索リンクの構築や、パラメータ値にスペースを含むAPIコールなど。