URL エンコーディングとは、 URL に使用できない文字 (日本語、スペース、特殊記号など) をパーセント記号 (%) と 16 進数で表現する変換方式です。パーセントエンコーディングとも呼ばれ、 RFC 3986 で定義されています。
URL に直接使用できる文字は、英数字 (A-Z 、 a-z 、 0-9) と一部の記号 (- . _ ~) に限られます。それ以外の文字は、 UTF-8 でバイト列に変換した後、各バイトを %XX の形式で表現します。たとえば、スペースは %20 、日本語の「東京」は %E6%9D%B1%E4%BA%AC になります。
実務で注意すべき点として、 + (プラス記号) の扱いがあります。 URL のクエリパラメータでは + がスペースとして解釈される慣習がありますが、パス部分では + はそのまま + として扱われます。この不一致がバグの原因になることがあります。確実にスペースを表現するには %20 を使用してください。
短縮 URL サービスでは、ユーザーが入力した URL の URL エンコーディングを正しく処理することが重要です。エンコード済みの URL とデコード済みの URL を同一の短縮 URL に紐づける正規化処理、二重エンコードの防止 (%20 が %2520 にならないようにする) が必要です。関連書籍は Amazon でも探せます。