Вы МОЖЕТЕ кодировать +, но не обязаны.
Во-первых, мы должны согласиться, что 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>.