スペース文字の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コールなど。

Try It — URL Encoder

フルツールを開く