パーセントエンコーディングとは、URL 内で使用できない文字をパーセント記号 (%) と 2 桁の 16 進数で表現する方式の正式名称です。RFC 3986「Uniform Resource Identifier (URI): Generic Syntax」で標準化されており、URL エンコーディングと同義で使われます。
エンコードの仕組みは、対象文字の UTF-8 バイト列を 1 バイトずつ「%XX」形式に変換するものです。たとえば、「&」は「%26」、「=」は「%3D」、「/」は「%2F」にエンコードされます。URL のクエリパラメータ内でこれらの予約文字を値として使用する場合、エンコードが必須です。<% if (typeof amazonTag !== 'undefined' && amazonTag) { %><a href="https://www.amazon.co.jp/s?k=RFC%20URL%20仕様書&tag=<%= amazonTag %>" target="_blank" rel="nofollow noopener noreferrer" class="amazon-inline-link">Amazon の関連書籍</a><% } else { %>Amazon の関連書籍<% } %>も参考になります。
パーセントエンコーディングで注意すべき点は、エンコードする範囲の判断です。URL のパス部分とクエリ部分では、エンコードが必要な文字が異なります。パス部分では「/」はセパレータとして機能するためエンコードしませんが、クエリ部分の値に「/」が含まれる場合はエンコードが必要です。
ダブルエンコーディング (既にエンコードされた文字列を再度エンコードすること) は、URL の解釈エラーの原因になります。「%20」が「%2520」になるような事態を避けるため、エンコード処理は 1 回だけ適用するよう注意しましょう。<% if (typeof amazonTag !== 'undefined' && amazonTag) { %><a href="https://www.amazon.co.jp/s?k=Web%20セキュリティ%20入門&tag=<%= amazonTag %>" target="_blank" rel="nofollow noopener noreferrer" class="amazon-inline-link">Web セキュリティの入門書</a><% } else { %>Web セキュリティの入門書<% } %>も役立ちます。