在URI中,空格可以编码为+
。既然如此,那么在创建具有国际前缀的tel URI时,是否应该对前导加编码?
哪个更好?两者都在实践中工作吗?
<a href="tel:+1234">Call me</a>
<a href="tel:%2B1234">Call me</a>
答案 0 :(得分:2)
没有
来自RFC 3966的section 3(电话号码的电话号码):
如果保留字符&#34; +&#34;,&#34;;&#34;,&#34; =&#34;,&#34;?&#34;用作&#34; tel&#34;的组件之间的分隔符。 URI,它们不能是百分比编码。
如果它是参数值的一部分,您只需对+
进行百分比编码:
这些字符[&#34; +&#34;,&#34;;&#34;,&#34; =&#34;和&#34;?&#34;]必须是百分比如果它们出现在tel URI参数值中,则进行编码。
我不确定指示它是global number的前导+
是否被视为分隔符,但全局数字的定义是:
全球唯一的数字由领先的&#34; +&#34;字符。
所以它指的是+
,而不是百分比编码的东西。
此外examples明确指出它不应该是百分比编码,例如:
tel:+1-201-555-0123
请注意,tel
URI中的空格(例如,参数值中的空格)可能无法使用+
进行编码。对于空格字符使用+
而不是%20
不是可以在任何URI中完成的事情;它只能在其URI方案明确定义的URI中使用。
答案 1 :(得分:1)
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 info re: forms)。在tel:URIs中编码空格没有有效的方法。有关有效的可视分隔符,请再次参阅RFC 3966(第5页)。