Допустимые символы для части каталога URL (для коротких ссылок)

Есть ли другие символы, кроме A-Za-z0-9, которые можно использовать для сокращения ссылок без проблем? :)

Я думал о +,; - или о чем-то.

Существует ли определенный стандарт в отношении того, какие символы могут использоваться в URL, который уважают поставщики браузеров?

Ответы

Ответ 1

A сегмент пути (части в пути, разделенные /) в абсолютном пути 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) или Кодирование базы 64 с безопасным алфавитом URL и именем файла (т.е. A - Z, A - Z, 0 - 9, -, _).

Ответ 2

В соответствии с RFC 3986 действительными символами для компонента пути являются:

a-z A-Z 0-9 . - _ ~ ! $ & ' ( ) * + , ; = : @

а также процентные символы и, конечно, косую черту /.

Имейте в виду, что многие приложения (не обязательно браузеры), которые пытаются разобрать URI, чтобы сделать их доступными, например, могут поддерживать гораздо меньший набор символов. Это похоже на парсинг адресов электронной почты, где большинство попыток также не поймают все адреса, разрешенные стандартом.