【问题标题】:Should the plus in tel URIs be encoded?tel URI 中的加号应该被编码吗?
【发布时间】:2016-04-28 20:18:27
【问题描述】:

在 URI 中,空格可以编码为 +。既然如此,那么在创建国际前缀的tel URI时,是否应该对前导加号进行编码?

哪个更好?两者在实践中都有效吗?

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

【问题讨论】:

    标签: uri tel


    【解决方案1】:

    没有。

    来自 RFC 3966 的 section 3电话号码的 tel URI):

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

    如果 + 是参数值的一部分,您只会对它进行百分比编码:

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


    我不确定前面的+(表示它是global number)是否算作分隔符,但全局数字的定义说:

    全球唯一编号由前导“+”字符标识。

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

    还有examples 明确表示它不应该是百分比编码的,例如:

    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 info re: forms)。没有有效的方法来编码 tel: URI 中的空格。请再次参阅 RFC 3966(第 5 页)了解有效的可视分隔符。

      【讨论】:

        猜你喜欢
        • 2015-04-18
        • 2012-05-28
        • 2016-11-30
        • 2019-05-13
        • 1970-01-01
        • 2013-06-17
        • 2011-04-26
        相关资源
        最近更新 更多