Как работает URL-кодирование
В адресах сайтов разрешены лишь немногие символы: латинские буквы, цифры и несколько знаков. Всё остальное кодируется. В UTF-8 буква Ж состоит из байтов D0 и 96, поэтому получается %D0%96. Пробел превращается в %20, а в формах – в +.
Закодировано
%D0%91%D0%BE%D1%80%D1%89 %D0%B2 %D0%9C%D0%BE%D1%81%D0%BA%D0%B2%D0%B5
Раскодировано
Борщ в Москве
Самые частые URL-коды
%D0%96= Ж,%D0%B6= ж,%D1%91= ё,%D0%81= Ё%D1%8E= ю,%D1%8D= э,%D1%89= щ,%D1%8B= ы%E2%82%AC= €,%E2%80%99= ’,%E2%80%93= –%20= пробел,%2F= /,%3F= ?,%26= &,%25= %
Русский текст легко узнать по началу кодов: почти каждая кириллическая буква – это два байта, %D0… или %D1…. Старые системы кодируют буквы одним байтом Windows-1251: %CC%EE%F1%EA%E2%E0 вместо %D0%9C%D0%BE%D1%81%D0%BA%D0%B2%D0%B0. Mojibuster понимает и такие коды и возвращает Москва.
Откуда берётся текст с кодами
- Скопированные ссылки: браузер показывает
ru.wikipedia.org/wiki/Москва, но в буфер обмена часто попадает%D0%9C%D0%BE%D1%81%D0%BA%D0%B2%D0%B0. - Формы и метки: поисковые запросы и UTM-метки хранятся в логах серверов и выгрузках аналитики в закодированном виде, например
?q=%D0%B1%D0%BE%D1%80%D1%89. - Выгрузки и API: некоторые сервисы рассылок, вебхуки и API сохраняют значения закодированными; тогда в CSV-файле вместо имён стоят коды.
- Имена файлов: скачанный файл называется
%D0%A1%D1%87%D1%91%D1%82.pdf, если сервер не раскодировал имя.
Коды и кракозябры одновременно
Иногда текст испорчен дважды: %D0%A0%C2%B6 – это закодированные кракозябры Р¶, то есть ж, которую сначала прочитали неверно, а потом закодировали. Mojibuster сначала раскодирует коды, а затем исправит кодировку Windows-1251. В итоге снова получится ж.
Опция Также преобразовать коды на этой странице уже включена. Она превращает и HTML-коды (Ж), коды из писем (=D0=96) и экранированные последовательности из программ (\u0416). Другие ошибки с буквами: что такое кракозябры.
Раскодировать самому: Excel, JavaScript, Python и PHP
- Excel: есть только функция кодирования (
ENCODEURLв английской версии), функции раскодирования нет. Проще всего скопировать столбец, вставить сюда и вернуть результат. См. также кракозябры в Excel. - JavaScript:
decodeURIComponent('%D0%9C%D0%BE%D1%81%D0%BA%D0%B2%D0%B0')даётМосква. - Python:
urllib.parse.unquote('%D0%9C%D0%BE%D1%81%D0%BA%D0%B2%D0%B0'), а для данных форм, где+значит пробел,unquote_plus. - PHP:
rawurldecode()илиurldecode()для данных форм.
Частые вопросы
Что значит %D0%96?
Это Ж в URL-кодировке: два байта UTF-8 D0 и 96, перед каждым стоит %. Так же %D0%B6 – это ж, а %D1%8F – это я.
Что значит %20?
Пробел. В данных форм вместо него часто стоит +. Mojibuster оставляет + как есть: в обычном тексте это может быть настоящий плюс.
Мои ссылки загружаются на сервер?
Нет. Преобразование полностью выполняется в вашем браузере. Ссылки с токенами, адресами почты и другими личными данными не покидают ваше устройство.
Почему 100% не меняется?
Mojibuster преобразует только последовательности, из которых получается настоящий символ. 100%, 50 % или одинокий %20 в обычном тексте остаются как есть.