Допустимые символы для части каталога в URL (для коротких ссылок)
Есть ли другие символы, кроме A-Za-z0-9, которые можно использовать для сокращения ссылок без проблем...:) Я думал о +,;- или о чем-то.
Существует ли определенный стандарт на то, какие символы могут использоваться в URL, которые уважают поставщики браузеров?
2 ответа
Сегмент пути (части пути, разделенные /
) в абсолютном пути URI может содержать ноль или более pchar, который определяется следующим образом:
pchar = unreserved / pct-encoded / sub-delims / ":" / "@"
pct-encoded = "%" HEXDIG HEXDIG
unreserved = ALPHA / DIGIT / "-" / "." / "_" / "~"
sub-delims = "!" / "$" / "&" / "'" / "(" / ")"
/ "*" / "+" / "," / ";" / "="
Так что это в основном A
-Z
, a
-z
, 0
-9
, -
, .
, _
, ~
, !
, $
, &
, '
, (
, )
, *
, +
, ,
, ;
, =
, :
, @
, так же как %
за этим должны следовать две шестнадцатеричные цифры. Любой другой символ / байт должен быть закодирован с использованием процентного кодирования.
Хотя это всего 79 символов, которые можно буквально использовать в сегменте пути, некоторые пользовательские агенты также кодируют некоторые из этих символов (например, %7E
вместо ~
). Вот почему многие используют только 62 буквенно-цифровых символов (т.е. A
-Z
, a
-z
, 0
-9
) или кодировка Base 64 с URL-адресом и безопасным алфавитом имени файла (т. е. A
-Z
, a
-z
, 0
-9
, -
, _
).
Согласно RFC 3986 допустимыми символами для компонента пути являются:
a-z A-Z 0-9 . - _ ~ ! $ & ' ( ) * + , ; = : @
а также символы в процентах и, конечно же, слеш /
,
Имейте в виду, однако, что многие приложения (не обязательно браузеры), которые пытаются анализировать URI, например, чтобы сделать их кликабельными, могут поддерживать гораздо меньший набор символов. Это похоже на анализ адресов электронной почты, где большинство попыток также не перехватывают все адреса, разрешенные стандартом.