PUEDES codificar +
, pero no tienes que hacerlo.
Primero, debemos aceptar que mailto
es un ejemplo de un URI genérico, especificado por RFC 2396 . (Esto es lo que usan XHTML y HTML 4).
Ahora descubramos la lista de caracteres reservados en RFC 2396.
reserved = ";" | "/" | "?" | ":" | "@" | "&" | "=" | "+" |
"$" | ","
URI se divide en absoluto y relativo:
URI-reference = [ absoluteURI | relativeURI ] [ "#" fragment ]
Y debido a que mailto:
se especifica el esquema, este es un URI absoluto:
absoluteURI = scheme ":" ( hier_part | opaque_part )
Y dado que ambos patrones para hier_part
empezar /
, mailto
es una parte opaca.
opaque_part = uric_no_slash *uric
uric_no_slash = unreserved | escaped | ";" | "?" | ":" | "@" |
"&" | "=" | "+" | "$" | ","
uric = reserved | unreserved | escaped
Entonces, la restricción es que tienes que escapar /
si se trata del primer carácter, pero después de eso puedes poner caracteres reservados incluyendo +
y @
.
Aquí hay otro RFC para apoyar esto. En las últimas RFC del esquema mailto publicado en 2010 llamado RFC 6068 , dice:
El software que crea 'mailto'
URI también debe tener cuidado de codificar los caracteres reservados que se utilizan. Los formularios HTML son un tipo de software que crea 'mailto'
URI. Las implementaciones actuales codifican un espacio como '+'
, pero esto crea problemas porque tal '+'
posición para un espacio no se puede distinguir de un real '+'
en un 'mailto'
URI. Cuando se producen 'mailto'
URI, todos los espacios DEBEN codificarse como
%20
, y los '+'
caracteres PUEDEN codificarse como %2B
. Tenga en cuenta que los '+'
caracteres se utilizan con frecuencia como parte de una dirección de correo electrónico para indicar una subdirección, como por ejemplo en <bill+ietf@example.org>
.