Как быстро узнать и преобразовать кодировку

Бывает, что в веб-браузере вместо читаемого текста показывается что-то вроде:

— Выполните вход или зарегистрируйтесь

то есть совершенно нечитаемые символы.

Или так, когда английский символы показываются нормально, а вместо других символов знак процента и буквы с цифрами:

mat2%3A%20%D0%BD%D0%BE%D0%B2%D0%B0%D1%8F%20%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D1%8F%20%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D1%8B%20%D0%B4%D0%BB%D1%8F%20%D1%83%D0%B4%D0%B0%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F%20%D0%BC%D0%B5%D1%82%D0%B0%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85

Бывают строки состоящие из больших и маленьких букв с цифрами, на конце может быть один или два знака равно:

0J/QviDQstCw0YjQtdC80YMg0L3QvtC80LXRgNGDINGN0LvQtdC60YLRgNC+0L3QvdC+0LPQviDQutC+0YjQtdC70YzQutCwwqDQt9Cw0L/Rg9GJ0LXQvdC+wqDRgNCw0YHRgdC70LXQtNC+0LLQsNC90LjQtSEg0JLQviDQuNC30LHQtdC20LDQvdC40LUg0LjRgdGH0LXQt9C90L7QstC10L3QuNGPwqDQvNCw0YLQtdGA0LjQsNC70YzQvdGL0YXCoNGB0YDQtdC00YHRgtCyLCDQv9GA0L7RgdC40LzCoNGB0YDQvtGH0L3QvsKg0LfQsNCy0LXRgNGI0LjRgtGMwqDQuNC00LXQvdGC0LjRhNC40LrQsNGG0LjRjg0KDQrQl9Cw0LLQtdGA0YjQuNGC0YzCoNCy0LXRgNC40YTQuNC60LDRhtC40Y4=

Иногда приходится сталкиваться с текстом, в котором регулярно встречается обратный слэш с иксом (\x) после которого идут буквы и цифры:

\xE2\x80\x94\x20\xD0\x92\xD1\x8B\xD0\xBF\xD0\xBE\xD0\xBB\xD0\xBD\xD0\xB8\xD1\x82\xD0\xB5\x20\xD0\xB2\xD1\x85\xD0\xBE\xD0\xB4\x20\xD0\xB8\xD0\xBB\xD0\xB8\x20\xD0\xB7\xD0\xB0\xD1\x80\xD0\xB5\xD0\xB3\xD0\xB8\xD1\x81\xD1\x82\xD1\x80\xD0\xB8\xD1\x80\xD1\x83\xD0\xB9\xD1\x82\xD0\xB5\xD1\x81\xD1\x8C

Чтобы быстро расшифровать кодировку, даже когда вы не знаете как закодирована строка, воспользуйтесь бесплатным онлайн-сервисом по определению и преобразованию кодировки. Этот сервис скопирован отсюда http://0xcc.net/jsescape/.

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

Получилось! Эта строка означает:

— Выполните вход или зарегистрируйтесь

Теперь разберёмся со строкой:

mat2%3A%20%D0%BD%D0%BE%D0%B2%D0%B0%D1%8F%20%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D1%8F%20%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D1%8B%20%D0%B4%D0%BB%D1%8F%20%D1%83%D0%B4%D0%B0%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F%20%D0%BC%D0%B5%D1%82%D0%B0%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85

Её значение оказалось:

mat2: новая версия программы для удаления метаданных

А теперь посмотрим на сообщение из письма от мошенников:

0J/QviDQstCw0YjQtdC80YMg0L3QvtC80LXRgNGDINGN0LvQtdC60YLRgNC+0L3QvdC+0LPQviDQutC+0YjQtdC70YzQutCwwqDQt9Cw0L/Rg9GJ0LXQvdC+wqDRgNCw0YHRgdC70LXQtNC+0LLQsNC90LjQtSEg0JLQviDQuNC30LHQtdC20LDQvdC40LUg0LjRgdGH0LXQt9C90L7QstC10L3QuNGPwqDQvNCw0YLQtdGA0LjQsNC70YzQvdGL0YXCoNGB0YDQtdC00YHRgtCyLCDQv9GA0L7RgdC40LzCoNGB0YDQvtGH0L3QvsKg0LfQsNCy0LXRgNGI0LjRgtGMwqDQuNC00LXQvdGC0LjRhNC40LrQsNGG0LjRjg0KDQrQl9Cw0LLQtdGA0YjQuNGC0YzCoNCy0LXRgNC40YTQuNC60LDRhtC40Y4=

Как определить кодировку

Некоторые часто встречающиеся кодировки вполне можно определить «на глаз». Определение кодировки невооружённым глазом может сильно ускорить процесс расшифровки строки или быстрее понять причину, почему текст выведен в таком виде.

URL кодировка

Начнём с кодировки, которую видел каждый — в строке браузера или на сайтах вы могли видеть примерно такие адреса: https://kali.org.ru/%d0%b4%d1%80%d1%83%d0%b3%d0%b8%d0%b5-it-%d1%82%d0%b5%d0%bc%d1%8b/%d0%ba%d0%b0%d0%ba-%d0%bd%d0%b0%d1%87%d0%b0%d1%82%d1%8c-%d0%b7%d0%bd%d0%b0%d0%ba%d0%be%d0%bc%d1%81%d1%82%d0%b2%d0%be-%d1%81-%d0%ba%d0%be%d0%bc%d0%b0%d0%bd%d0%b4%d0%b0%d0%bc%d0%b8-linux-cygwin

Стандарт URL использует набор символов US-ASCII. Это имеет серьёзный недостаток, поскольку разрешается использовать лишь латинские буквы, цифры и несколько знаков пунктуации. Все другие символы необходимо перекодировать. Например, перекодироваться должны буквы кириллицы, буквы с диакритическими знаками, лигатуры, иероглифы. Перекодирующая кодировка описана в стандарте RFC 3986 и называется URL-encoding, URLencoded или percent‐encoding.

Данные из веб-форм, когда Content-Type указан как application/x-www-form-urlencoded также передаются в URL кодировке.


Base64

Я почти уверен, что вы когда-либо видели сообщения в этой кодировке — они пишутся большими и маленькими латинскими буквами, а также цифрами. На конце может быть один или два знака равно:

0J7QtNC90LDQttC00YssINCyINGB0YLRg9C00ZHQvdGD0Y4g0LfQuNC80L3RjtGOINC/0L7RgNGDLCDRjyDQuNC3INC70LXRgdGDINCy0YvRiNC10LsuINCR0YvQuyDRgdC40LvRjNC90YvQuSDQvNC+0YDQvtC3Lg==

В любом случае, почти наверняка вы используете эту кодировку почти каждый день, даже сами того не зная, поскольку сообщения электронной почты очень часто используют Base64, особенно для писем, к котором приложены файлы (фотографии, документы и прочее).

Base64 — стандарт кодирования двоичных данных при помощи только 64 символов ASCII. Алфавит кодирования содержит текстово-цифровые латинские символы A-Z, a-z и 0-9 (62 знака) и 2 дополнительных символа, зависящих от системы реализации. Каждые 3 исходных байта кодируются 4 символами (увеличение на ¹⁄₃).

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

Указанный сервис также умеет декодировать из Base64, а также кодировать в Base64, но имеется особенность: довольно часто длинная строка Base64 в email разбивается на строки одинаковой длины (по причинам удобства). В сервисе, на который дана ссылка, нужно убрать лишние переводы строк, то есть вводимые данные должны быть в одну строку, иначе после первого символа «новая строка» сообщение будет декодировано неверно.

Кодировка UTF-8

Неправильно отображаемая кодировка UTF-8 выглядит как большие буквы N и D с дополнительными линиями, встречаются дроби 3/4.

— Выполните вход или зарегистрируйтесь

В данном случае кодировка UTF-8 обработана как кодировка ISO-8859-1 или CP1258. С помощью указанного сервиса такие строки можно расшифровать если скопировать их в окна Quoted-printable или URL.

UTF-8 кодировка обработанная как ANSI напоминает строки из больших букв P, C, Г и маленьких букв r и s:

добавить чёрный список

Экранированные последовательности

Экранированные последовательности особенно часто можно увидеть в исходном коде программ. Если вы хотите узнать, что означает строка записанная таким образом, то скопируйте её в одно из полей:

  • \uXXXX — обратный слэш и u за которыми идут буквы и цифры (шестнадцатеричное число)
  • \UXXXXXXXX — обратный слэш и большая U за которыми идут буквы и цифры (шестнадцатеричное число)
  • &#DDDD; - знак амперсанд и решётка, за которыми идут четыре цифры
  • &#xXXXX; - знак амперсанд, решётка и x, за которыми следует шестнадцатеричное число
  • \xXX — обратный слэш и x, за которыми следует шестнадцатеричное число
  • \OOO — обратный слэш и большая O, за которыми идёт число в восьмеричной системе счисления.

Такие строки используются в ситуациях, когда есть опасность, что написанные буквами национального алфавита строки исказятся (например, браузер неправильно поймёт кодировку веб-страницы):

<script>
	alert ("\xD0\x9F\xD1\x80\xD0\xB8\xD0\xB2\xD0\xB5\xD1\x82")
</script>

Как конвертировать в экранированные последовательности

На этой же странице, как уже можно догадаться, можно конвертировать и в саму экранированную последовательность символов.

Если вы хотите углубить своё понимание строк, познакомиться с непечатанными символами, узнать что такое управляющие символы, узнать о других формах записи строк и о выполнении с ними логических операций, то рекомендуется для расширения кругозора статья «ASCII и шестнадцатеричное представление строк. Побитовые операции со строками».

Как изменить кодировку строки или документа без сторонних сервисов

Хотя показанный выше сервис НЕ отсылает введённые данные на сервер, а обходится исключительно с помощью JavaScript, запущенном в браузере пользователя, вполне возможно, что вы хотите изменить кодировку не используя сайты.

Double Commander при просмотре текстовых файлов (для этого выделите файл и нажмите F3) или при редактировании (F4) вы можете после открытия изменить кодировку, а также сохранить с другой кодировкой.

Ещё один вариант для тех, у кого Linux, — использовать командную строку. С помощью неё можно узнать кодировку непонятной строки, а также изменить её на правильную. Для этого смотрите статью «Как определить кодировку файла или строки. Как конвертировать файлы в кодировку UTF-8 в Linux».

Рекомендуется Вам:

Добавить комментарий

Ваш e-mail не будет опубликован.