コロン (:) のURLエンコード

コロン文字 (:) を%3AにURLエンコードする方法を解説。URLスキームやポート番号における予約された役割と、エンコードが必要な場面を学びましょう。

Character

:

Encoded

%3A

詳細な説明

コロン(:)はURLにおいて2つの主要な構造的役割を持つ予約文字です。スキームとURLの残り部分を分離し(例:https:)、ホストとポート番号を分離します(例:localhost:3000)。コロンがパスセグメントやクエリパラメータ値のデータとして現れる場合は、%3Aにエンコードすべきです。

percent-encoding形式: %3Aはコロンを表します(ASCIIコード58、16進数で0x3A)。

コロンの構造的役割:

  1. スキーム区切り: https://ftp://mailto: — スキーム名の後のコロンは構造的
  2. ポート区切り: example.com:8080 — ホストとポート番号を分離
  3. userinfo区切り: user:password@host — ユーザー名とパスワードを分離(非推奨)

JavaScriptでの動作:

encodeURIComponent("10:30 AM")          // "10%3A30%20AM"
encodeURIComponent("localhost:3000")    // "localhost%3A3000"
encodeURI("https://example.com:8080")   // "https://example.com:8080" (構造的なコロンを保持)

エンコードが必要な場面: 一般的にコロンのエンコードが必要なのは以下の場合です:

  • クエリパラメータとして渡す時刻の値:?time=10%3A30%3A00
  • 特定のコンテキストでのIPv6アドレス(ブラケットがほとんどのケースを処理するが)
  • 単一パラメータ内のキーバリュー形式のデータ:?filter=status%3Aactive
  • パラメータとして渡すWindowsファイルパス:?path=C%3A%5CUsers

エンコードが任意の場合: RFC 3986では多くの場合、パスセグメントやクエリ文字列内のエンコードされていないコロンを許可しています。ブラウザは通常、パス内のエンコードされていないコロンを正しく処理します(例:/article/2026-01-15T10:30:00)。ただし、一部のプロキシやセキュリティフィルタがエンコードされていないコロンを拒否・誤解釈する可能性があるため、相互運用性のためにはエンコードがより安全です。

落とし穴: URLをパラメータ値として渡す場合、https://のコロンも他のすべてと一緒にエンコードする必要があります。コールバックURLやリダイレクトパラメータの構築時にこれを忘れることは、バグの一般的な原因です。URL値全体にencodeURIComponent()を使用してください:?redirect=https%3A%2F%2Fexample.com

ユースケース

APIクエリパラメータでタイムスタンプや時刻形式の値を渡す場合。例えば、14:30:00のような時刻値を受け付けるスケジューリングエンドポイントなど。

Try It — URL Encoder

フルツールを開く