在tel URI中,加号是否需要进行编码?

7
在URI中,空格可以被编码成+。由于这种情况存在,那么当创建带有国际前缀的tel URI时,应该对前导加号进行编码吗?
哪种方法更好?这两种方法在实践中都有效吗?
<a href="tel:+1234">Call me</a>
<a href="tel:%2B1234">Call me</a>
2个回答

6

不。

来自RFC 3966(电话号码的tel URI)第3节{{link1:}}:

如果保留字符“+”,“;”,“=”和“?”用作“tel”URI组件之间的分隔符,则它们必须不进行百分比编码。

只有当它是参数值的一部分时,才会对 + 进行百分比编码:

如果这些字符["+", ";", "=", and "?"]出现在tel URI参数值中,则必须进行百分比编码。


我不确定指示它是全局数字的前导+是否算作分隔符,但全局数字的定义如下:

前导“+”字符标识唯一全局数字。

因此,它指的是+,而不是某些百分比编码。

示例也表明它不应该被百分比编码,例如:

tel:+1-201-555-0123

注意,在 tel URI 中(例如在参数值中),空格可能无法使用 + 进行编码。对于空格字符,使用 + 而不是 %20 不是在任何 URI 中都可以做到的;它只可能在其 URI 方案明确定义的 URI 中实现。

2

tel: URI方案没有编码空格的规定 - 请参见RFC 3966

    5.1.1.  Separators in Phone Numbers

    ...

    even though ITU-T E.123 [E.123] recommends the use of space
       characters as visual separators in printed telephone numbers, "tel"
       URIs MUST NOT use spaces in visual separators to avoid excessive
       escaping.

加号符号仅在application/x-www-form-urlencoded(表单提交的默认内容类型 - 参见W3C forms信息)中编码空格。在tel:URI中没有有效的编码空格的方法。有关有效的视觉分隔符,请参见RFC 3966(第5页)。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接