电子邮件地址中的 & 符号 (href)
-
24-09-2019 - |
题
我正在使用带有与号的电子邮件地址, 用户想要一个“联系我们”链接,以打开一条新消息,并填充他们的地址, 我通常使用 href,但 & 符号导致它不起作用, 有什么想法吗?
这就是我现在所拥有的:
<a href="mailto:L&D@gha.org.uk? subject=MessageTitle&"
style="font-family: Verdana; font-size: large; font-weight: bold; color: #800000">#GHA Organisation Development</a>
解决方案
使用 &
而不是普通的 &
. 。您的 href URL 位于 HTML 内部,因此需要对其进行正确转义才能成为有效的 HTML。
其他提示
其实,这是 不是 一个 不明确的&符号, ,因此使用您建议的 HTML 是完全有效的。当前接受的答案是不正确的(尽管我同意始终对&符号进行编码以避免混淆是个好主意)。
HTML 规范定义了不明确的 & 符号,如下所示:
不明确的与号是 U+0026 与号字符 (&),后跟 U+0030 数字零 (0) 到 U+0039 数字九 (9)、U+0061 拉丁小写字母 A 到 U+0039 数字九 (9) 范围内的一个或多个字符U+007A 拉丁文小写字母 Z 和 U+0041 拉丁文大写字母 A 到 U+005A 拉丁文大写字母 Z,后跟 U+003B 分号字符 (;),其中这些字符与命名字符参考部分。
不以分号结尾的实体(例如 &
) 但属性值的处理方式有所不同:
如果字符引用作为属性的一部分使用,并且匹配的最后一个字符不是 U+003B 分号字符 (;),并且下一个字符是 U+003D 等号字符 (=) 或在范围内U+0030 数字零 (0) 到 U+0039 数字九 (9)、U+0041 拉丁文大写字母 A 到 U+005A 拉丁文大写字母 Z,或 U+0061 拉丁文小写字母 A 到 U+007A 拉丁文小写字母 Z ,那么,由于历史原因,U+0026 与字符(&)之后匹配的所有字符都必须被取消,并且不返回任何内容。
但这并不适用于此,因为下一个字符是 @
.
FWIW,我对此进行了彻底的研究,并在这里写下了我的发现: http://mathiasbynens.be/notes/ambiguously-ampersands
我也创建了 一个在线工具 您可以使用它来检查标记中是否有不明确的&符号或不以分号结尾的字符引用,这两者都是无效的。(当前没有 HTML 验证器可以正确执行此操作。)