Bạn CÓ THỂ mã hóa +
, nhưng bạn không phải làm thế.
Đầu tiên, chúng ta cần đồng ý rằng đó mailto
là một ví dụ về URI chung, được chỉ định bởi RFC 2396 . (Đây là những gì XHTML và HTML 4 sử dụng).
Bây giờ chúng ta hãy tìm hiểu danh sách các nhân vật dành riêng trong RFC 2396.
reserved = ";" | "/" | "?" | ":" | "@" | "&" | "=" | "+" |
"$" | ","
URI chia thành tuyệt đối và tương đối:
URI-reference = [ absoluteURI | relativeURI ] [ "#" fragment ]
Và bởi vì lược đồ mailto:
được chỉ định nên đây là một URI tuyệt đối:
absoluteURI = scheme ":" ( hier_part | opaque_part )
Và vì cả hai mẫu để hier_part
bắt đầu /
, mailto
là một phần mờ đục.
opaque_part = uric_no_slash *uric
uric_no_slash = unreserved | escaped | ";" | "?" | ":" | "@" |
"&" | "=" | "+" | "$" | ","
uric = reserved | unreserved | escaped
Vì vậy, hạn chế là bạn phải thoát /
nếu nói đến ký tự đầu tiên, nhưng sau đó bạn có thể đặt các ký tự dành riêng bao gồm +
và @
.
Đây là một RFC khác để hỗ trợ này. Trong các RFC mới nhất của sơ đồ mailto được xuất bản năm 2010 được gọi là RFC 6068 , nó nói:
Phần mềm tạo 'mailto'
URI tương tự phải cẩn thận để mã hóa bất kỳ ký tự dành riêng nào được sử dụng. Các biểu mẫu HTML là một loại phần mềm tạo 'mailto'
URI. Các triển khai hiện tại mã hóa một không gian như '+'
, nhưng điều này tạo ra các vấn đề bởi vì '+'
không thể phân biệt được chỗ đứng như vậy đối với không gian thực '+'
trong 'mailto'
URI. Khi tạo 'mailto'
URI, tất cả các khoảng trắng NÊN được mã hóa thành
%20
và các '+'
ký tự CÓ THỂ được mã hóa thành %2B
. Xin lưu ý rằng các '+'
ký tự thường được sử dụng như một phần của địa chỉ email để chỉ ra một phần phụ, ví dụ như trong <bill+ietf@example.org>
.