电话 URI 中的加号是否应该编码?

Sam*_*mpo 5 uri tel

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

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

<a href="tel:+1234">Call me</a>
<a href="tel:%2B1234">Call me</a>
Run Code Online (Sandbox Code Playgroud)

uno*_*nor 6

不。

\n

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

\n
\n

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

\n
\n

+如果 a\xe2\x80\x99 是参数值的一部分,则仅对 a 进行百分比编码:

\n
\n

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

\n
\n
\n

I\xe2\x80\x99m 不确定前导+,这表明 it\xe2\x80\x99s 是一个全局数字,是否算作分隔符,但全局数字的定义说:

\n
\n

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

\n
\n

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

\n

而且这些示例清楚地表明 it\xe2\x80\x99s 不应该进行百分比编码,例如:

\n
\n
tel:+1-201-555-0123\n
Run Code Online (Sandbox Code Playgroud)\n
\n
\n

请注意,URI 中的空格tel(例如,参数值中)可能不会用+. 在任何 URI 中都不能使用+代替空格字符;%20it\xe2\x80\x99s 只能在 URI 方案明确定义的 URI 中使用。

\n