Что находится после вопросительного знака в ссылке

Параметры URL передают странице дополнительные условия: поисковую фразу, номер страницы, выбранный цвет товара. В адресе https://example.org/catalog?page=2&color=blue путь /catalog выбирает раздел, а часть после ? задаёт два параметра. Имя page связано со значением 2, имя color со значением blue. Эта часть адреса называется строкой запроса, или query string.
Разборщик превращает такую запись в редактируемые пары. Можно заменить значение, убрать лишний параметр, добавить новый и скопировать собранную строку. Это удобно, когда длинная ссылка из рекламы или письма плохо читается: вместо поиска нужного символа среди процентов видны отдельные имена и значения. Инструмент принимает полный адрес HTTP(S) или только параметры с необязательным вопросительным знаком.
Символ & разделяет пары, первое = внутри пары отделяет имя от значения. В formula=a=b имя равно formula, а значение равно a=b. Последующие знаки равенства остаются частью значения. Если амперсанд нужен внутри текста, его кодируют как %26, иначе он начнёт следующую пару.
Порядок и одинаковые имена имеют значение
Строка tag=red&tag=blue содержит две записи с одним именем. Разборщик сохраняет обе в исходном порядке. Удаление первой строки оставит вторую, изменение второй не перепишет первую. Это полезно для фильтров с несколькими выбранными значениями и для проверки ссылки, которую собрала форма.
При этом наличие двух одинаковых имён ещё не говорит, как сайт обработает запрос. Один сервер возьмёт первое значение, другой последнее, третий вернёт список. Если фильтр ведёт себя странно, сначала посмотрите все повторения, затем проверьте правила конкретного сайта. Превращение таких пар в обычный объект с единственным значением на ключ может незаметно потерять часть данных.
Пустые имена и значения тоже сохраняются. Запись flag разбирается как имя с пустым значением и при сборке становится flag=. А =x означает пустое имя со значением x. Формально эти пары различаются, хотя прикладной сервер может отклонять обе. Совсем пустые участки между соседними амперсандами не создают отдельных строк.
Плюс, пробел и процентная запись
Здесь применяются правила формата application/x-www-form-urlencoded, используемые интерфейсом URLSearchParams из URL Standard. При разборе знак + означает пробел, а %2B означает буквальный плюс. При сборке пробел снова записывается плюсом. Поэтому имя человека «Анна Мария» и выражение «2+2» требуют разных последовательностей.
Процентная запись обозначает байты: после % идут две шестнадцатеричные цифры. Один символ кириллицы занимает несколько таких групп. Разборщик проверяет корректность записи и UTF-8 до показа результата. Одинокий %D0 или группа %ZZ вызывают ошибку, чтобы повреждённый фрагмент не превратился в незаметную замену.
Если нужно преобразовать только отдельное значение, пригодится URL-кодировщик. Для редактирования пары здесь вводите обычный текст: например, чай & мёд. При сборке амперсанд закодируется автоматически. Предварительное кодирование всего значения добавит лишний слой: процент станет %25.
Как проверить ссылку на понятных примерах
Пример 1. Поисковая фраза и два фильтра. Вставьте ?q=чай+с+мёдом&tag=red&tag=blue. Получатся три строки: q со значением «чай с мёдом» и две строки tag. Замените blue на green. В результате изменится только последнее значение, а оба фильтра сохранятся.
Пример 2. Пробел рядом с плюсом. Строка q=a+b%2Bc даёт значение a b+c. Первый знак был разделителем слов, второй остался плюсом. Обратная сборка вернёт q=a+b%2Bc. Такой тест помогает найти причину поломанного математического выражения или значения, содержащего плюс.
Пример 3. Пустые поля. Вход flag&empty=&=x создаёт три пары. После сборки получится flag=&empty=&=x. У первого параметра появился знак равенства, но значение по-прежнему пустое. Если сайт различает наличие флага и явно пустое значение, проверяйте исходную ссылку отдельно: нормализация не сохраняет эту разницу записи.
Пример 4. Якорь после параметров. В адресе https://example.org/list?page=2#reviews разберётся только page=2. Часть #reviews указывает фрагмент страницы и не входит в query string. Чтобы сохранить решётку внутри значения, нужна запись вроде label=%23reviews: тогда значение будет #reviews.
Пример 5. Ссылка как значение. Вставьте next=https%3A%2F%2Fexample.org%2Flist%3Fa%3D1%26b%3D2. Получится одна строка next с адресом https://example.org/list?a=1&b=2. Внутренний амперсанд не создаёт второй внешний параметр, потому что разделение на пары выполняется до декодирования.
Пример 6. Два слоя кодирования. Для path=%252Fcatalog результатом будет %2Fcatalog, а не /catalog. Инструмент снимает ровно один слой. При повторной сборке получится исходная строка. Если ожидался слеш, найдите место, где значение закодировали повторно, вместо безусловного второго декодирования всех полей.
Что проверить перед использованием результата
Выход содержит только строку параметров, без домена, пути, начального ? и якоря. Для адреса без параметров добавьте её после вопросительного знака. Если параметры уже есть, сначала разберите их вместе с новыми: простое дописывание может создать повторяющееся имя. Фрагмент после решётки должен оставаться в конце полного адреса.
Нормализация сохраняет пары, но может изменить их побайтовую запись. Например, пробел %20 станет +, а буквы в процентных группах получат стандартный регистр. Для обычного фильтра это ожидаемо. Подписанную ссылку, где проверяется точная строка, пересобирать без пересчёта подписи нельзя: даже эквивалентная запись может не пройти проверку.
Лимит исходного ввода составляет 20 000 символов и 200 пар. Суммарный текст редактируемых имён и значений также ограничен 20 000 символами; после кодирования результат может стать длиннее. Это ограничения инструмента, а не обещание допустимой длины для любого сайта. Сервер, браузер или промежуточный сервис могут применять собственные пределы.
Разбор выполняется в браузере и не открывает введённый адрес. Содержимое полей не записывается в ссылку этой страницы или хранилище инструмента; после перезагрузки возвращается пример. Встроенный в параметр объект можно отдельно прочитать в форматтере JSON. А работоспособность готовой ссылки проверяйте на целевом сайте: правильное кодирование само по себе не подтверждает существование страницы или смысл её параметров.
Частые вопросы
При переносе параметров между сайтом, HTML-кодом и программой важны правила каждого формата. Эти случаи помогают избежать изменений, которые выглядят безобидно, но меняют запрос.
Нужны ли HTML-сущности в параметрах ссылки?
В строке адреса используйте обычный амперсанд. Именованная HTML-сущность амперсанда нужна в HTML-коде для представления этого символа. Если скопировать её буквально в разборщик, часть amp; окажется в имени следующего параметра. Сначала возьмите адрес ссылки, а не её HTML-разметку.
Чем отличаются параметры в адресе и данные POST-запроса?
Query string находится в URL. Данные POST могут находиться в теле запроса, которого в адресной строке нет. Тело в формате form-urlencoded можно разобрать как строку пар, но JSON или multipart-данные требуют другого инструмента. По одной ссылке восстановить тело POST-запроса нельзя.
Что означает запись color[]=red?
Скобки здесь являются частью имени color[]. Некоторые серверные библиотеки договорились понимать такое имя как массив, но URLSearchParams не придаёт скобкам отдельного смысла. Здесь получится обычная пара; при сборке скобки станут %5B%5D.
Считаются ли Name и name одним параметром?
Разборщик сохраняет регистр и показывает разные имена. Автоматически приводить их к нижнему регистру нельзя: сервер может различать такие записи. Если документация сервиса требует name, используйте именно это написание.
Разделяет ли точка с запятой параметры?
В используемом формате разделителем служит амперсанд. Строка a=1;b=2 содержит одно имя a со значением 1;b=2. Некоторые старые системы используют другие договорённости; для них нужно сверяться с документацией сервера.
Станут ли числа и true настоящими числами и логическими значениями?
Нет, имена и значения остаются строками. Записи 001, 1 и 1.0 сохраняются раздельно, без округления. Решение о преобразовании типа принимает приложение, которое получает запрос.
Можно ли убрать UTM-метки без последствий?
UTM-метки обычно служат для определения источника перехода. Их удаление меняет сведения об этом переходе. При этом нельзя автоматически считать любой незнакомый параметр рекламным: он может выбирать товар, язык, доступ или срок действия ссылки. Удаляйте только параметры, назначение которых известно.
Похожие калькуляторы
Возможно вам пригодятся ещё несколько калькуляторов по данной теме:
- URL-кодировщик и декодировщик. Кодируйте текст для URL и декодируйте процентную запись.
- Форматтер и валидатор JSON. Проверьте JSON, приведите его к читаемому виду или сожмите без потери данных.
- Генератор QR-кода. Вставьте ссылку или текст. Готовый QR-код можно скопировать или скачать как PNG.
- Визуальный редактор HTML. Редактируйте бесплатно и онлайн HTML-код, и сразу же смотрите внешний вид текста и страницы в режиме предпросмотра (WYSIWYG).
- Генератор паролей. Создайте сложный и надёжный пароль бесплатно с помощью онлайн-генератора из 8, 10, 12 или большего числа рандомных (случайных) символов.
- Сумма прописью. Переведите рубли и копейки в текст и скопируйте готовую сумму.
- Хрономер: время чтения текста. Оцените, сколько времени займёт чтение или произнесение текста вслух. Просто введите текст в форму, и хронометраж рассчитается автоматически.
- Рандомайзер: генератор случайных чисел. Выберите до 20 случайных чисел без повторов и задайте исключения.
- Случайный выбор из списка. Добавьте варианты по одному в строке, укажите количество и выберите режим повторов.
- Перемешать список. Добавьте пункты по одному в строке и укажите, нужно ли сохранять одинаковые значения.
Есть что добавить?
Напишите своё мнение, комментарий или предложение.