Конвертер кодировок текста

Декодер URL онлайн: раскодировать ссылку с русскими буквами

В адресе страницы по стандарту могут быть только латинские буквы, цифры и несколько знаков. Все остальные символы — русские буквы, пробелы, кавычки — браузер записывает байтами: каждый байт превращается в знак % и две шестнадцатеричные цифры. Поэтому ссылка на статью «Кириллица» в Википедии, скопированная из адресной строки, выглядит так:

https://ru.wikipedia.org/wiki/%D0%9A%D0%B8%D1%80%D0%B8%D0%BB%D0%BB%D0%B8%D1%86%D0%B0

Это не ошибка и не кракозябры: ссылка рабочая, просто читать ее неудобно. Декодер выше возвращает такой записи обычный вид, а при нажатии «Закодировать» делает обратное — готовит русский текст для вставки в адрес или в параметр запроса.

Как пользоваться

  1. Раскодировать ссылку. Вставьте ее в верхнее поле — если в ней есть коды вида %D0%9F, результат появится сразу. Можно нажать и кнопку «Декодировать».
  2. Закодировать текст. Вставьте текст или ссылку с русскими буквами и нажмите «Закодировать». Обычный режим кодирует только то, чего не может быть в адресе, и сохраняет знаки / ? & = #. Для значения одного параметра (например, поискового запроса) отметьте «Кодировать все спецсимволы».
  3. Если результат не читается, выберите кодировку вручную: ссылки старых сайтов и форумов бывают в Windows-1251, реже в KOI8-R.

Почему одна буква — это два кода

Код после знака % — это один байт. Сколько байтов занимает буква, зависит от кодировки, в которой браузер или сайт записал адрес:

СловоКодировкаКак выглядит в ссылке
ПриветUTF-8 (все современные сайты и браузеры)%D0%9F%D1%80%D0%B8%D0%B2%D0%B5%D1%82
ПриветWindows-1251 (старые сайты, форумы, формы поиска)%CF%F0%E8%E2%E5%F2
пробеллюбая%20 или + (в параметрах запроса)

В UTF-8 русская буква занимает два байта, поэтому коды почти всегда начинаются с %D0 или %D1. В Windows-1251 буква занимает один байт, и коды идут в диапазоне от %C0 до %FF. По этому признаку декодер и определяет кодировку автоматически.

Частые проблемы

  • После декодирования остались коды вида %D0%9F. Ссылку закодировали дважды: в ней встречается %25 — это закодированный сам знак процента. Перенесите результат в исходное поле и декодируйте еще раз.
  • Вместо букв ромбы «�». Байты записаны не в UTF-8. Выберите кодировку Windows-1251 или режим «Определить автоматически».
  • Вместо пробелов плюсы, или наоборот, пропали настоящие плюсы. В параметрах запроса пробел часто записывают знаком +, а сам плюс — кодом %2B. Если в адресе плюс означает именно плюс (например, в пути к файлу), снимите флажок «“+” означает пробел».
  • Получились кракозябры вроде «РџСЂРёРІРµС‚». Значит, ссылку уже раскодировали в неправильной кодировке до вас. Вставьте этот текст в конвертер кодировок — он определит кодировку и исправит текст.

Как раскодировать ссылку в программах

ГдеРаскодироватьЗакодировать
JavaScriptdecodeURIComponent(s)encodeURIComponent(s)
PHPrawurldecode($s) (или urldecode, который превращает «+» в пробел)rawurlencode($s)
Python 3urllib.parse.unquote(s), для «+» — unquote_plusurllib.parse.quote(s)
Excelвстроенной функции нет=КОДИР.URL(A1) (Excel 2013 и новее)

Все эти функции по умолчанию работают с UTF-8. Ссылку в Windows-1251 в Python раскодирует unquote(s, encoding='cp1251'), а decodeURIComponent в JavaScript на такой ссылке выдает ошибку «URIError: malformed URI sequence» — это верный признак того, что кодировка не UTF-8.

Частые вопросы

Как скопировать ссылку из браузера сразу с русскими буквами?
Браузеры показывают в адресной строке русские буквы, но при копировании всего адреса подставляют коды %XX — так ссылка гарантированно откроется в любой программе. В Firefox это можно отключить: откройте страницу about:config и включите параметр browser.urlbar.decodeURLsOnCopy. В остальных случаях проще вставить ссылку в декодер на этой странице.
Безопасно ли вставлять сюда ссылки?
Да. Декодирование и кодирование выполняются прямо в вашем браузере, ссылка и текст на сервер не отправляются.
Чем %20 отличается от плюса?
Оба обозначают пробел, но плюс — только в параметрах запроса (после знака ?), по старому правилу HTML-форм. В пути к странице плюс означает сам плюс, а пробел записывается только как %20. Поэтому при кодировании этот инструмент всегда пишет пробел как %20.
Почему адрес с русским доменом выглядит как xn--?
Это другое кодирование — Punycode. Им записываются имена доменов вроде пример.рф (в виде xn--e1afmkfd.xn--p1ai), а коды %XX используются только для остальной части адреса: пути и параметров. Перевести домен в обе стороны можно в Punycode-конвертере.