2016-01-22 73 views
2

在URI中,空格可以编码为+。既然是这样,那么在创建带有国际前缀的电话URI时,是否应将前导加号编码?应该对电话URI中的加号进行编码吗?

哪个更好?两者都在实践中工作吗?

<a href="tel:+1234">Call me</a> 
<a href="tel:%2B1234">Call me</a> 

回答

2

从RFC 3966的section 3为电话号码的TEL URI):

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

你只百分之编码一个+如果它是一个参数值的一部分:

这些字符[; “?” “+”, “”, “=”,并]必须被如果它们出现在tel URI参数值中,则编码百分比。


我不知道,如果领导+,这表明它是一个global number,计为分隔符,而是全球数的定义说:

全球唯一数字标识由领先的“+”字符组成。

所以它指的是+,而不是百分比编码的东西。

而且还examples明确指出它不应该是百分比编码,如:

tel:+1-201-555-

注意,在tel的URI空间(例如,在参数值)可能不用+编码。使用+而不是%20作为空格字符不是可以在任何URI中完成的;它只能在URI方案明确定义的URI中。

1

电话: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页)了解有效的可视分隔符。