Как перевести символы в текст
HackWare.ru
Этичный хакинг и тестирование на проникновение, информационная безопасность
Как быстро узнать и преобразовать кодировку
Бывает, что в веб-браузере вместо читаемого текста показывается что-то вроде:
то есть совершенно нечитаемые символы.
Или так, когда английский символы показываются нормально, а вместо других символов знак процента и буквы с цифрами:
Бывают строки состоящие из больших и маленьких букв с цифрами, на конце может быть один или два знака равно:
Иногда приходится сталкиваться с текстом, в котором регулярно встречается обратный слэш с иксом (\x) после которого идут буквы и цифры:
Чтобы быстро расшифровать кодировку, даже когда вы не знаете как закодирована строка, воспользуйтесь бесплатным онлайн-сервисом по определению и преобразованию кодировки. Этот сервис скопирован отсюда http://0xcc.net/jsescape/.
Принцип работы очень простой — в окно вы вставляете строку в неизвестной кодировке, а сервис пытается преобразовать в каждую из поддерживаемых им кодировок. То есть если в поле Простой текст вы видите читаемый текст, значит ваша строка успешно расшифрована. Попробую понять смысл â ÐÑполниÑе Ð²Ñ Ð¾Ð´ или заÑегиÑÑÑиÑÑйÑеÑÑ:
Получилось! Эта строка означает:
Теперь разберёмся со строкой:
Её значение оказалось:
А теперь посмотрим на сообщение из письма от мошенников:
Как определить кодировку
Некоторые часто встречающиеся кодировки вполне можно определить «на глаз». Определение кодировки невооружённым глазом может сильно ускорить процесс расшифровки строки или быстрее понять причину, почему текст выведен в таком виде.
URL кодировка
Стандарт URL использует набор символов US-ASCII. Это имеет серьёзный недостаток, поскольку разрешается использовать лишь латинские буквы, цифры и несколько знаков пунктуации. Все другие символы необходимо перекодировать. Например, перекодироваться должны буквы кириллицы, буквы с диакритическими знаками, лигатуры, иероглифы. Перекодирующая кодировка описана в стандарте RFC 3986 и называется URL-encoding, URLencoded или percent‐encoding.
Данные из веб-форм, когда Content-Type указан как application/x-www-form-urlencoded также передаются в URL кодировке.
Base64
Я почти уверен, что вы когда-либо видели сообщения в этой кодировке — они пишутся большими и маленькими латинскими буквами, а также цифрами. На конце может быть один или два знака равно:
В любом случае, почти наверняка вы используете эту кодировку почти каждый день, даже сами того не зная, поскольку сообщения электронной почты очень часто используют 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:
Экранированные последовательности
Экранированные последовательности особенно часто можно увидеть в исходном коде программ. Если вы хотите узнать, что означает строка записанная таким образом, то скопируйте её в одно из полей:
Такие строки используются в ситуациях, когда есть опасность, что написанные буквами национального алфавита строки исказятся (например, браузер неправильно поймёт кодировку веб-страницы):
Как конвертировать в экранированные последовательности
На этой же странице, как уже можно догадаться, можно конвертировать и в саму экранированную последовательность символов.
Если вы хотите углубить своё понимание строк, познакомиться с непечатанными символами, узнать что такое управляющие символы, узнать о других формах записи строк и о выполнении с ними логических операций, то рекомендуется для расширения кругозора статья «ASCII и шестнадцатеричное представление строк. Побитовые операции со строками».
Как изменить кодировку строки или документа без сторонних сервисов
Хотя показанный выше сервис НЕ отсылает введённые данные на сервер, а обходится исключительно с помощью JavaScript, запущенном в браузере пользователя, вполне возможно, что вы хотите изменить кодировку не используя сайты.
Double Commander при просмотре текстовых файлов (для этого выделите файл и нажмите F3) или при редактировании (F4) вы можете после открытия изменить кодировку, а также сохранить с другой кодировкой.
Ещё один вариант для тех, у кого Linux, — использовать командную строку. С помощью неё можно узнать кодировку непонятной строки, а также изменить её на правильную. Для этого смотрите статью «Как определить кодировку файла или строки. Как конвертировать файлы в кодировку UTF-8 в Linux».
Как декодировать текст онлайн
Если вам прислали текстовый документ, информация в котором отображается в виде странных и непонятных символов, можно предположить, что автор использовал кодировку, не распознаваемую вашим компьютером. Для изменения кодировки существуют специальные программы-декодеры, однако куда проще воспользоваться одним из онлайн-сервисов.
Сайты для перекодировки онлайн
Сегодня мы расскажем о самых популярных и действенных сайтах, которые помогут угадать кодировку и изменить ее на более понятную для вашего ПК. Чаще всего на таких сайтах работает автоматический алгоритм распознавания, однако в случае необходимости пользователь всегда может выбрать подходящую кодировку в ручном режиме.
Способ 1: Универсальный декодер
Декодер предлагает пользователям просто скопировать непонятный отрывок текста на сайт и в автоматическом режиме переводит кодировку на более понятную. К преимуществам можно отнести простоту ресурса, а также наличие дополнительных ручных настроек, которые предлагают самостоятельно выбрать нужный формат.
Работать можно только с текстом, размер которого не превышает 100 килобайт, кроме того, создатели ресурса не гарантируют, что перекодировка будет в 100% случаев успешной. Если ресурс не помог – просто попробуйте распознать текст с помощью других способов.
Способ 2: Студия Артемия Лебедева
Еще один сайт для работы с кодировкой, в отличие от предыдущего ресурса имеет более приятный дизайн. Предлагает пользователям два режима работы, простой и расширенный, в первом случае после декодировки пользователь видит результат, во втором случае видна начальная и конечная кодировка.
С сайтом любая непонятная каша из символов быстро превращается в понятный русский текст. На данный момент работает ресурс со всеми известными кодировками.
Способ 3: Fox Tools
Fox Tools предназначен для универсальной декодировки непонятных символов в обычный русский текст. Пользователь может самостоятельно выбрать начальную и конечную кодировку, есть на сайте и автоматический режим.
Дизайн простой, без лишних наворотов и рекламы, которая мешает нормальной работе с ресурсом.
Несмотря на то, что сайт якобы распознает кодировку в автоматическом режиме, пользователю все равно приходится выбирать понятный результат в ручном режиме. Из-за данной особенности куда проще воспользоваться описанными выше способами.
Рассмотренный сайты позволяют всего в несколько кликов преобразовать непонятный набор символов в читаемый текст. Самым практичным оказался ресурс Универсальный декодер — он безошибочно перевел большинство зашифрованных текстов.
Помимо этой статьи, на сайте еще 12556 инструкций.
Добавьте сайт Lumpics.ru в закладки (CTRL+D) и мы точно еще пригодимся вам.
Отблагодарите автора, поделитесь статьей в социальных сетях.
Автоопределение кодировки текста
Введение
Я очень люблю программировать, я любитель и первый и последний раз заработал на программировании в далёком 1996 году. Но для автоматизации повседневных задач иногда что-то пишу. Примерно год назад открыл для себя golang. В качестве инструмента создания утилит golang оказался очень удобным. Итак.
Возникла потребность обработать большое количество (больше тысячи, так и вижу улыбки профи) архивных файлов со специальной геофизической информацией. Формат файлов текстовый, простой. Если вдруг интересно то это LAS формат.
LAS файл содержит заголовок и данные.
Данные практически CSV, только разделитель табуляция или пробелы.
А заголовок содержит описание данных и вот в нём обычно содержится русский текст. Это может быть название месторождения, название исследований, записанных в файл и пр.
Файлы эти созданы в разное время и в разных программах, доходит до того, что в одном файле часть в кодировке CP1251, а часть в CP866. Файлы эти мне нужно обработать, а значит понять. Вот и потребовалось определять автоматически кодировку файла.
В итоге изобрёл велосипед на golang и соответственно родилась маленькая библиотечка с возможностью детектировать кодовую страницу.
Про кодировки. Не так давно на хабре была хорошая статья про кодировки Как работают кодировки текста. Откуда появляются «кракозябры». Принципы кодирования. Обобщение и детальный разбор Если хочется понять, что такое “кракозябры” или “кости”, то стоит прочитать.
В начале я накидал своё решение. Потом пытался найти готовое работающее решение на golang, но не вышло. Нашлось два решения, но оба не работают.
Обе уверенно ошибаются на некоторых кодировках. Стандартная та вообще почти ничего определить не может по текстовым файлам, оно и понятно, её для html страниц делали.
При поиске часто натыкался на готовые утилиты из мира linux — enca. Нашёл её версию скомпилированную для WIN32, версия 1.12. Её я тоже рассмотрю, там есть забавности. Я прошу сразу прощения за своё полное незнание linux, а значит возможно есть ещё решения которые тоже можно попытаться прикрутить к golang коду, я больше искать не стал.
Сравнение найденных решений на автоопределение кодировки
Подготовил каталог softlandia\cpd тестовые данные с файлами в разных кодировках. Содержимое файлов очень короткое и одинаковое. Одна строка “Русский в кодировке CodePageName”. Дополнил файлами со смешением кодировок и некоторыми сложными случаями и попробовал определить.
Мне кажется, получилось забавно.
| # | Кодировка | html/charset | saintfish/chardet | softlandia/cpd | enca |
|---|---|---|---|---|---|
| 1 | CP1251 | windows-1252 | CP1251 | CP1251 | CP1251 |
| 2 | CP866 | windows-1252 | windows-1252 | CP866 | CP866 |
| 3 | KOI8-R | windows-1252 | KOI8-R | KOI8-R | KOI8-R |
| 4 | ISO-8859-5 | windows-1252 | ISO-8859-5 | ISO-8859-5 | ISO-8859-5 |
| 5 | UTF-8 with BOM | utf-8 | utf-8 | utf-8 | utf-8 |
| 6 | UTF-8 without BOM | utf-8 | utf-8 | utf-8 | utf-8 |
| 7 | UTF-16LE with BOM | utf-16le | utf-16le | utf-16le | ISO-10646-UCS-2 |
| 8 | UTF-16LE without BOM | windows-1252 | ISO-8859-1 | utf-16le | unknown |
| 9 | UTF-16BE with BOM | utf-16le | utf-16be | utf-16be | ISO-10646-UCS-2 |
| 10 | UTF-16BE without BOM | windows-1252 | ISO-8859-1 | utf-16be | ISO-10646-UCS-2 |
| 11 | UTF-32LE with BOM | utf-16le | utf-32le | utf-32le | ISO-10646-UCS-4 |
| 12 | UTF-32LE without BOM | windows-1252 | utf-32le | utf-32le | ISO-10646-UCS-4 |
| 13 | UTF-32BE with BOM | windows-1252 | utf-32be | utf-32be | ISO-10646-UCS-4 |
| 14 | UTF-32BE without BOM | windows-1252 | utf-32be | utf-32be | ISO-10646-UCS-4 |
| 15 | KOI8-R (UPPER) | windows-1252 | KOI8-R | KOI8-R | CP1251 |
| 16 | CP1251 (UPPER) | windows-1252 | CP1251 | CP1251 | KOI8-R |
| 17 | CP866 & CP1251 | windows-1252 | CP1251 | CP1251 | unknown |
Наблюдение 1
enca не определила кодировку у файла UTF-16LE без BOM — это странно, ну ладно. Я попробовал добавить больше текста, но результата не получил.
Наблюдение 2. Проблемы с кодировками CP1251 и KOI8-R
Строка 15 и 16. У команды enca есть проблемы.
Здесь сделаю объяснение, дело в том, что кодировки CP1251 (она же Windows 1251) и KOI8-R очень близки если рассматривать только алфавитные символы.
Таблица CP 1251
Таблица KOI8-r
В обеих кодировках алфавит расположен от 0xC0 до 0xFF, но там, где у одной кодировки заглавные буквы, у другой строчные. Судя по всему enca, работает по строчным буквам. Вот и получается, если подать на вход программе enca строку “СТП” в кодировке CP1251, то она решит, что это строка “яро” в кодировке KOI8-r, о чём и сообщит. В обратную сторону также работает.
Наблюдение 3
Стандартной библиотеке html/charset можно доверить только определение UTF-8, но осторожно! Пользоваться следует именно charset.DetermineEncoding(), поскольку метод utf8.Valid(b []byte) на файлах в кодировке utf-16be возвращает true.
Собственный велосипед
Автоопределение кодировки возможно только эвристическими методами, неточно. Если мы не знаем, на каком языке и в какой кодировке записан текстовый файл, то определить кодировку с высокой точночностью наверняка можно, но будет сложновато… и нужно будет достаточно много текста.
Для меня такая цель не стояла. Мне достаточно определять кодировки в предположении, что там есть русский язык. И второе, определять нужно по небольшому количеству символов – на 10 символах должно быть достаточно уверенное определение, а желательно вообще на 5–6 символах.
Алгоритм
Когда я обнаружил совпадение кодировок KOI8-r и CP1251 по местоположению алфавита, то на пару дней загрустил… стало понятно, что чуть-чуть придётся подумать. Получилось так.
Критерии соответствия
Первый критерий
Первым критерием является количество самых популярных букв русского алфавита.
Наиболее часто встречаются буквы: о, е, а, и, н, т, с, р, в, л, к, м, д, п, у. Данные буквы дают 82% покрытия. Для всех кодировок кроме KOI8-r и CP1251 я использовал только первые 9 букв: о, е, а, и, н, т, с, р, в. Этого вполне хватает для уверенного определения.
А вот для KOI8-r и CP1251 пришлось доработать напильником. Коды некоторых из этих букв совпадают, например буква о имеет в CP1251 код 0xEE при этом в KOI8-r этот код у буквы н. Для этих кодировок были взяты следующие популярные буквы. Для CP1251 использовал а, и, н, с, р, в, л, к, я. Для KOI8-r — о, а, и, т, с, в, л, к, м.
Второй критерий
К сожалению, для очень коротких случаев (общая длина русского текста 5-6 символов) встречаемость популярных букв на уровне 1-3 шт и происходит нахлёст кодировок KOI8-r и CP1251. Пришлось вводить второй критерий. Подсчёт количества пар согласная+гласная.
Такие комбинации ожидаемо наиболее часто встречаются в русском языке и соответственно в той кодировке в которой число таких пар больше, та кодировка имеет больший критерий.
Вычисляются оба критерия, складываются и полученная сумма является итоговым критерием.
Результат отражен в таблице выше.
Особенности, с которыми я столкнулся
Чуть коснусь прелестей и проблем, связанных с golang. Раздел может быть интересен только начинающим писать на golang.
Проблемы
Лично походил по некоторым подводным камушкам из 50 оттенков Go: ловушки, подводные камни и распространённые ошибки новичков.
Излишне переживая и пытаясь дуть на воду, прослышав от других о страшных ожогах от молока, переборщил с проверкой входного параметра типа io.Reader. Я проверял переменную типа io.Reader с помощью рефлексии.
Но как оказалось в моём случае достаточно проверить на nil. Теперь всё стало проще
вызов bufio.NewReader( r ).Peek(ReadBufSize) спокойно проходит следующий тест:
В этом случае Peek() возвращает ошибку.
Разок наступил на грабли с передачей массивов по значению. Немного тупанул на попытке изменять элементы, хранящиеся в map, пробегая по ним в range…
Прелести
Сложно сказать что конкретно, постоянное ли битьё по рукам от линтера и компилятора или активное использование range, или всё вместе, но практически отсутствуют залёты по выходу индекса за пределы.
Конечно, очень приятно жить со сборщиком мусора. Полагаю мне ещё предстоит освоить грабли автоматизации выделения/освобождения памяти, но пока дебильная улыбка не покидает лица.
Строгая типизация — тоже кусочек счастья.
Переменные, имеющие тип функции — соответственно лёгкая реализация различного поведения у однотипных объектов.
Странно мало пришлось сидеть в отладчике, перечитывание кода обычно даёт результат.
Щенячий восторг от наличия массы инструментов из коробки, это чудное ощущение, когда компилятор, язык, библиотека и IDE Visual Studio Code работают на тебя вместе, слаженно.
Спасибо falconandy за конструктивные и полезные советы
Благодаря ему
Продолжаю добавлять тесты, выявился случай не определения UTF16. Обновил. Теперь UTF16 и LE и BE определяются даже в случае отсутствия русских букв
Двоичный код в текст и обратно
Онлайн конвертер для перевода текста в бинарный код и наоборот. Поможет выполнить кодирование двоичным кодом записав буквы, цифры и символы в бинарный код. Произведёт декодирование двоичного кода в слова, буквы, цифры и символы. Кодирование слов двоичным кодом. Зашифровка и расшифровка производится по стандартам кодировки таблиц ASCII или UTF-8 (Юникод) (UTF-16).
Будьте внимательны, если переводить символы в двоичную систему с помощью онлайн конвертера, то первый нулевой ведущий бит может быть отброшен, что может сбить с толку.
Смотрите также
11010000 10110011 11010000 10111110 00100000 11010000 10110010 00100000 11010000 10111111 11010000 10110000 11010000 10110001 11010000 10110011 00111111
11010000 10011111 11010001 10000000 11010000 10111000 11010000 10110010 11010000 10110101 11010001 10000010 00101110 00100000 11010000 10101111 00100000 11010000 10011101 11010000 10110000 11010001 10000001 11010001 10000010 11010001 10001111 00101110
11010000 10011111 11010001 10000000 11010000 10111000 11010000 10110010 11010000 10110101 11010001 10000010 00100000 11010000 10011100 11010000 10111000 11010001 10000000
11010000 10111111 11010000 10111000 11010000 10111111 11010000 10111000 00100000 11010000 10111010 11010000 10111110 11010001 10000000 11010000 10111110 11010001 10000010 11010000 10111010 11010000 10111000 11010000 10111001 00100000 11010000 10111010 11010000 10110000 11010001 10000000 11010000 10111011
11010000 10111000 11010000 10110100 11010000 10111000 00100000 11010001 10000011 11010001 10000000 11010000 10111110 11010000 10111010 11010000 10111000 00100000 11010000 10110100 11010000 10110101 11010000 10111011 11010000 10110000 11010000 10111001 00100000 11010001 10000111 11010000 10110101 00100000 11010001 10000001 11010000 10111100 11010000 10111110 11010001 10000010 11010001 10000000 11010000 10111000 11010001 10001000 11010001 10001100 00111111
11010000 10100001 11010000 10110000 11010000 10111100 00100000 11010000 10110100 11010000 10110101 11010000 10111011 11010000 10110000 11010000 10111001
А как мне загрузить на компьютер полученный бинарный файл? Смотреть на него глазами что ли? ))
Перекодировка текста онлайн
| Опубликовано | 22 сентября 2017 |
|---|---|
| Автор статьи | NimdaIT |
| Категория | Онлайн-сервисы |
| Обсуждение | нет комментариев |
Периодически случается так, что приходят письма, которые невозможно прочитать — они заполнены какими-то непонятными знаками. Происходит такое и с документами. Причина этого кроется в использовании неверной кодировки символов. Что с этим можно сделать, как прочитать что там написано?
Есть два варианта: самому подбирать кодировки или доверить этот процесс специальным программам. Алгоритм нахождения исходной кодировки не очевиден и, скорее всего, сведется к простому перебору. Это долгий и неэффективный метод. Использование онлайн программ позволяет практически мгновенно увидеть читабельный текст.
Способы конвертирования текста онлайн
Любая поисковая система в ответ на запрос «Перекодирование онлайн» выдаст несколько адресов, где можно бесплатно расшифровать текст. Мы рассмотрим наиболее популярные и удобные сервисы, которые без труда переведут нечитаемый текст в изначальный вид.
Способ 1: 2Cyr
Универсальный декодер работает только с кириллическими символами. Сервис пытается изменить кодировку, но если это сделать не удается, предлагаются другие варианты для выбора. На странице можно ознакомиться с пошаговым алгоритмом действий и небольшим количеством теории.
Для перекодировки текста нужно выполнить следующие действия:
Размер исходного текста ограничен 100 КБ.
Универсальный декодер определил тип исходной кодировки, но не справился с некоторыми символами. Тем не менее, текст можно прочитать и приблизительно понять, о чем идет речь. Конвертер кириллицы также предоставляет возможность посмотреть и выбрать альтернативные варианты расшифровки.
Способ 2: Alexpad
В отличие от предыдущего декодера, здесь текст можно не только скопировать в поле, но и загрузить из файла. Документ должен быть в формате TXT и размером не более 500 КБ.
Alexpad работает со всеми известными кодировками символов. На этом сайте также, как и на 2Cyr, есть теоретическая информация о проблеме, и о том как работает перекодировщик. Для ускорения работы декодер обрабатывает по 200 символов. Делает он это достаточно быстро, но если имеется большой текст, придется все время вставлять и копировать его куски.
Шаги по расшифровке текста с помощью этого сайта должны быть такими:
Способ 3: Декодер студии Артемия Лебедева
Расшифровщик дизайн студии имеет минималистичное оформление. Кроме поля для исходного текста на странице имеются кнопки для выбора простого или сложного перекодирования.
Работа с ним происходит следующим образом:
Итоговую информацию можно понять, но невозможно использовать в документах. Определены исходная и конечные кодировки символов.
При этом способе доступен выбор таблиц символов. По умолчанию используется автоматическая кодировка.
Качество обработки примерно такое же, как и в простом режиме. Присутствует информация об исходной и конечной кодировках текста.
Тестирование онлайн перекодировщиков подтвердило, что, к сожалению, не всякий текст может быть приведен к нужному виду без ошибок. Когда сервис не может найти соответствие какому-то числу, он подставляет на его место символ, близкий по числовому значению, а не изображению. Обычно используется вопросительный знак «?», но могут применяться и другие варианты. В таких случаях нужно или согласиться с таким представлением и попробовать разобраться в том, что получилось, или обратиться к профессионалам. Тем не менее, онлайн-декодеры имеют право на жизнь. Они часто помогают прочитать то, что, на первый взгляд, прочитать невозможно.













