2016-01-22 1 views
2

В URI пробелы могут быть закодированы как +. Так как это так, следует ли кодировать ведущий плюс при создании URI с международным префиксом?Должен ли быть закодирован плюс в URI URI?

Что лучше? Оба работают на практике?

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

ответ

2

No.

С section 3 из RFC 3966 (тель URI для телефонных номеров):

Если зарезервированные символы "+", ";", "=" , а также "?" используются как разделители между компонентами URI «tel», они НЕ ДОЛЖНЫ быть закодированы в процентах.

Вы бы только процент-закодировать +, если это часть значения параметра:

Эти символы [; "?" "+", "", "=", И] должны быть процентов, закодированных, если они появляются в значениях параметра URI tel.


Я не уверен, если ведущий +, что указывает на то, что это global number, считается разделителем, но определение глобального числа говорит:

Глобально уникальные номера идентифицируются ведущим символом «+».

Таким образом, это относится к +, а не к чему-то пронумерованному.

А также examples ясно, что это не должно быть процентов закодированный, например:

tel:+1-201-555-

Обратите внимание, что пробелы в tel URIs (например, в значениях параметров) может не кодируются с помощью +. Использование + вместо %20 для символа пробела не является чем-то, что может быть сделано в любом URI; это возможно только в URI, схема URI явно определяет это.

1

тель: схема 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) , Нет допустимого способа кодирования пространства в URI tel: URI. См. Снова RFC 3966 (стр. 5) для действительных визуальных разделителей.