Вы МОЖЕТЕ кодировать +
, но не обязаны.
Во-первых, мы должны согласиться, что mailto
это пример универсального URI, указанного в RFC 2396 . (Это то, что используют 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, чтобы поддержать это. В последних RFC почтовой схемы, опубликованной в 2010 году под названием RFC 6068 , говорится:
Программное обеспечение, создающее 'mailto'
URI, также должно быть осторожно, чтобы закодировать любые зарезервированные символы, которые используются. HTML-формы являются одним из видов программного обеспечения, которое создает 'mailto'
URI. Текущие реализации кодируют пространство как '+'
, но это создает проблемы, потому что такое '+'
положение для пространства нельзя отличить от реального '+'
в 'mailto'
URI. При создании 'mailto'
URI все пробелы ДОЛЖНЫ быть закодированы как
%20
, а '+'
символы МОГУТ быть закодированы как %2B
. Обратите внимание, что '+'
символы часто используются как часть адреса электронной почты для указания подадреса, как, например, в <bill+ietf@example.org>
.