Potresti codificare +
, ma non è necessario.
Innanzitutto, dobbiamo concordare che si mailto
tratta di un esempio di URI generico, specificato da RFC 2396 . (Questo è ciò che usano XHTML e HTML 4).
Ora scopriamo l'elenco dei caratteri riservati in RFC 2396.
reserved = ";" | "/" | "?" | ":" | "@" | "&" | "=" | "+" |
"$" | ","
L'URI si divide in assoluto e relativo:
URI-reference = [ absoluteURI | relativeURI ] [ "#" fragment ]
E poiché lo schema mailto:
è specificato, questo è un URI assoluto:
absoluteURI = scheme ":" ( hier_part | opaque_part )
E poiché entrambi i motivi per hier_part
cominciare /
, mailto
è una parte opaca.
opaque_part = uric_no_slash *uric
uric_no_slash = unreserved | escaped | ";" | "?" | ":" | "@" |
"&" | "=" | "+" | "$" | ","
uric = reserved | unreserved | escaped
Quindi la restrizione è che devi scappare /
se si tratta del primo personaggio, ma dopo puoi inserire personaggi riservati tra cui +
e @
.
Ecco un altro RFC per supportare questo. Negli ultimi RFC dello schema mailto pubblicato nel 2010 chiamato RFC 6068 , si afferma:
'mailto'
Allo stesso modo, il software che crea gli URI deve fare attenzione a codificare tutti i caratteri riservati utilizzati. I moduli HTML sono un tipo di software che crea 'mailto'
URI. Le attuali implementazioni codificano uno spazio come '+'
, ma questo crea problemi perché una tale '+'
posizione per uno spazio non può essere distinta da un reale '+'
in un 'mailto'
URI. Quando si producono 'mailto'
URI, tutti gli spazi DOVREBBERO essere codificati come
%20
e i '+'
caratteri POSSONO essere codificati come %2B
. Si noti che i '+'
caratteri vengono spesso utilizzati come parte di un indirizzo e-mail per indicare un indirizzo secondario, come ad esempio in <bill+ietf@example.org>
.