Você pode codificar +
, mas você não precisa.
Primeiro, precisamos concordar que este mailto
é um exemplo de um URI genérico, especificado pela RFC 2396 . (É isso que XHTML e HTML 4 usam).
Agora vamos descobrir a lista de caracteres reservados no RFC 2396.
reserved = ";" | "/" | "?" | ":" | "@" | "&" | "=" | "+" |
"$" | ","
O URI se divide em absoluto e relativo:
URI-reference = [ absoluteURI | relativeURI ] [ "#" fragment ]
E porque o esquema mailto:
é especificado, este é um URI absoluto:
absoluteURI = scheme ":" ( hier_part | opaque_part )
E já que ambos os padrões para hier_part
começar /
, mailto
é uma parte opaca.
opaque_part = uric_no_slash *uric
uric_no_slash = unreserved | escaped | ";" | "?" | ":" | "@" |
"&" | "=" | "+" | "$" | ","
uric = reserved | unreserved | escaped
Portanto, a restrição é que você precisa escapar /
se for o primeiro caractere, mas depois disso você poderá colocar caracteres reservados, incluindo +
e @
.
Aqui está outra RFC para apoiar isso. Nas últimas RFCs do esquema mailto publicadas em 2010, denominadas RFC 6068 , ele diz:
'mailto'
Da mesma forma, o software que cria URIs deve ter o cuidado de codificar qualquer caractere reservado usado. Os formulários HTML são um tipo de software que cria 'mailto'
URIs. As implementações atuais codificam um espaço como '+'
, mas isso cria problemas porque essa '+'
posição para um espaço não pode ser distinguida da real '+'
em um 'mailto'
URI. Ao produzir 'mailto'
URIs, todos os espaços devem ser codificados como
%20
, e '+'
caracteres podem ser codificados como %2B
. Observe que os '+'
caracteres são frequentemente usados como parte de um endereço de email para indicar um sub-endereço, como por exemplo em <bill+ietf@example.org>
.