在URI中,空格可以编码为+
。既然是这样,那么在创建带有国际前缀的电话URI时,是否应将前导加号编码?应该对电话URI中的加号进行编码吗?
哪个更好?两者都在实践中工作吗?
<a href="tel:+1234">Call me</a>
<a href="tel:%2B1234">Call me</a>
在URI中,空格可以编码为+
。既然是这样,那么在创建带有国际前缀的电话URI时,是否应将前导加号编码?应该对电话URI中的加号进行编码吗?
哪个更好?两者都在实践中工作吗?
<a href="tel:+1234">Call me</a>
<a href="tel:%2B1234">Call me</a>
号
从RFC 3966的section 3(为电话号码的TEL URI):
如果保留字符 “+”, “;”, “=” ,和“?”被用作“tel”URI组件之间的分隔符,它们不能被百分比编码。
你只百分之编码一个+
如果它是一个参数值的一部分:
这些字符[; “?” “+”, “”, “=”,并]必须被如果它们出现在tel URI参数值中,则编码百分比。
我不知道,如果领导+
,这表明它是一个global number,计为分隔符,而是全球数的定义说:
全球唯一数字标识由领先的“+”字符组成。
所以它指的是+
,而不是百分比编码的东西。
而且还examples明确指出它不应该是百分比编码,如:
tel:+1-201-555-
注意,在tel
的URI空间(例如,在参数值)可能不用+
编码。使用+
而不是%20
作为空格字符不是可以在任何URI中完成的;它只能在URI方案明确定义的URI中。
电话:URI方案不具有编码空间的规定 - 见RFC 3966:(表单提交默认的内容类型 - 见W3C info re: forms)
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
编码空间。在tel:URI中没有有效的方法来编码空间。请再次参阅RFC 3966(第5页)了解有效的可视分隔符。