エンコード+
できますが、そうする必要はありません。
まず、RFC 2396mailto
で指定されている汎用URIの例であることに同意する必要があります。(これはXHTMLおよびHTML 4が使用するものです)。
次に、RFC 2396の予約文字のリストを調べてみましょう。
reserved = ";" | "/" | "?" | ":" | "@" | "&" | "=" | "+" |
"$" | ","
URIは絶対と相対に分割されます:
URI-reference = [ absoluteURI | relativeURI ] [ "#" fragment ]
スキームmailto:
が指定されているため、これは絶対URIです。
absoluteURI = scheme ":" ( hier_part | opaque_part )
そして用両方のパターン以降hier_part
で始まり/
、mailto
不透明な部分です。
opaque_part = uric_no_slash *uric
uric_no_slash = unreserved | escaped | ";" | "?" | ":" | "@" |
"&" | "=" | "+" | "$" | ","
uric = reserved | unreserved | escaped
その/
ため、最初の文字についてはエスケープする必要がありますが、その後、+
やなどの予約文字を入れることができます@
。
これをサポートする別のRFCを次に示します。2010年に公開されたRFC 6068と呼ばれるmailtoスキームの最新のRFC では、次のように述べています。
'mailto'
同様に、URIを作成するソフトウェアは、使用される予約文字をエンコードするように注意する必要があります。HTMLフォームは、'mailto'
URI を作成するソフトウェアの一種です。現在の実装では、スペースをとしてエンコードしますが、
URIのスペースを実際に区別できないため、'+'
問題が発生します。URIを生成するとき、すべてのスペースはとしてエンコードされるべきであり(SHOULD )、文字はとしてエンコードされる
場合があります(MAY)。
たとえば、のように、サブアドレスを示すために文字が電子メールアドレスの一部として頻繁に使用されることに注意してください。'+'
'+'
'mailto'
'mailto'
%20
'+'
%2B
'+'
<bill+ietf@example.org>