Xd0 что за символ
ASCII таблица
ASCII — A merican S tandard C ode for I nformation I nterchange.
ASCII была разработана (1963 год) для кодирования символов, коды которых помещались в 7 бит (128 символов). Со временем кодировка была расширена до 8-ми бит (256 символов), коды первых 128-и символов не изменились.
Управляющие символы ASCII (код символа 0-31)
Первые 32 символа в ASCII-таблице не имеют печатных кодов и используются для управления периферийными устройствами, телетайпами, принтерами и т.д.
DEC | OCT | HEX | BIN | Symbol | HTML Number | HTML Name | Description |
---|---|---|---|---|---|---|---|
0 | 000 | 0x00 | 00000000 | NUL \0 | & #000; | Null char | |
1 | 001 | 0x01 | 00000001 | SOH | & #001; | Start of Heading | |
2 | 002 | 0x02 | 00000010 | STX | & #002; | Start of Text | |
3 | 003 | 0x03 | 00000011 | ETX | & #003; | End of Text | |
4 | 004 | 0x04 | 00000100 | EOT | & #004; | End of Transmission | |
5 | 005 | 0x05 | 00000101 | ENQ | & #005; | Enquiry | |
6 | 006 | 0x06 | 00000110 | ACK | & #006; | Acknowledgment | |
7 | 007 | 0x07 | 00000111 | BEL | & #007; | Bell | |
8 | 010 | 0x08 | 00001000 | BS | & #008; | Back Space | |
9 | 011 | 0x09 | 00001001 | HT \t | & #009; | Tab | |
10 | 012 | 0x0A | 00001010 | LF \n | & #010; | Новая строка | |
11 | 013 | 0x0B | 00001011 | VT | & #011; | Vertical Tab | |
12 | 014 | 0x0C | 00001100 | FF | & #012; | Form Feed | |
13 | 015 | 0x0D | 00001101 | CR \r | & #013; | Возврат каретки | |
14 | 016 | 0x0E | 00001110 | SO | & #014; | Shift Out / X-On | |
15 | 017 | 0x0F | 00001111 | SI | & #015; | Shift In / X-Off | |
16 | 020 | 0x10 | 00010000 | DLE | & #016; | Data Line Escape | |
17 | 021 | 0x11 | 00010001 | DC1 | & #017; | Device Control 1 (oft. XON) | |
18 | 022 | 0x12 | 00010010 | DC2 | & #018; | Device Control 2 | |
19 | 023 | 0x13 | 00010011 | DC3 | & #019; | Device Control 3 (oft. XOFF) | |
20 | 024 | 0x14 | 00010100 | DC4 | & #020; | Device Control 4 | |
21 | 025 | 0x15 | 00010101 | NAK | & #021; | Negative Acknowledgement | |
22 | 026 | 0x16 | 00010110 | SYN | & #022; | Synchronous Idle | |
23 | 027 | 0x17 | 00010111 | ETB | & #023; | End of Transmit Block | |
24 | 030 | 0x18 | 00011000 | CAN | & #024; | Cancel | |
25 | 031 | 0x19 | 00011001 | EM | & #025; | End of Medium | |
26 | 032 | 0x1A | 00011010 | SUB | & #026; | Substitute | |
27 | 033 | 0x1B | 00011011 | ESC | & #027; | Escape | |
28 | 034 | 0x1C | 00011100 | FS | & #028; | File Separator | |
29 | 035 | 0x1D | 00011101 | GS | & #029; | Group Separator | |
30 | 036 | 0x1E | 00011110 | RS | & #030; | Record Separator | |
31 | 037 | 0x1F | 00011111 | US | & #031; | Unit Separator | |
DEC | OCT | HEX | BIN | Symbol | HTML Number | HTML Name | Description |
Печатные символы ASCII (код символа 32-127)
Буквы, цифры, знаки препинания и другие символы расположенные на клавиатуре (англ.).
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».
Кодировки и шифрование¶
Кодировки¶
Наиболее распространённые кодировки
Обозначение в python
Латинские буквы, цифры и простые символы
Кириллическая кодировка (русский и другие языки)
Кодировка для русского языка
Unicode — стандарт кодирования символов, включающий в себя знаки почти всех письменных языков мира. В настоящее время стандарт является преобладающим в Интернете.
стандарт включает более 138 тысяч символов;
каждый символ имеет определённое название и код (номер);
Примеры кодов, имен и соответствующих символов:
Конвертация данных между байтам и строками¶
Данные по сети передаются, как правило, в байтах. Например, метод socket.recv() получает данные в байтах. Чтобы преобразовывать данные из байт в строки и наоборот используются специальные методы:
В коде будет выглядеть так:
При работе с кодировкой важно помнить:
Если вы кодируете строку в байты кодировкой UTF-8, то и перекодировать её из байт нужно этой же кодировкой. Некоторые кодировки совместимы, но в большинстве случаев, нарушения этого правила ведёт к потере данных.
В своём коде всегда используйте кодировки Unicode, оптимально UTF-8, она используется по умолчанию в большинстве методов и функций, так что это снижает риск ошибок.
Шифрование¶
Шифр Цезаря
Шифр Цезаря — это вид шифра подстановки, в котором каждый символ в открытом тексте заменяется символом, находящимся на некотором постоянном числе позиций левее или правее него в алфавите. Например, в шифре со сдвигом вправо на 3, A была бы заменена на D, B станет E, и так далее.
Повторить шифр можно в занятии
Формула для кодирования символа:
Шифр пар
Алфавит случайным образом записывают в 2 строки, и шифрование текста происходит заменой буквы на соседнюю ей по вертикали. Например:
Шифр Виженера
На алфавите длиной N вводят операцию добавления (циклического сдвига) букв. Пронумеровав буквы, добавляем их по модулю N (для англ. алфавита N=26).
Выбираем слово-ключ (пускай pass) и подписываем его под сообщением сколько нужно раз:
Задания¶
Доработайте прототип чата из прошлого урока таким образом, чтобы он корректно работал с русским языком (используйте методы кодирования и декодирования байтовых строк).
2. Напишите функцию для шифрования файла шифром Цезаря. Расшифруйте:
3. Напишите функцию для шифрования файла шифром пар. Расшифруйте:
4.* Напишите функцию для шифрования файла шифром Виженера. Расшифруйте. 5. Добавьте в чат (с кодировкой) возможность выполнять шифрование и дешифрование сообщения одним из шифров по выбору пользователя. 6. Доработайте чат таким образом, чтобы пользователь отправлял серверу имя зашифрованного файла и шифр, а сервер дешифровал его и отправлял содержимое файла обратно пользователю.
Глава 3. Представление информации с помощью чисел
Кодирование текста
Для описания текста компьютер использует таблицы кодов, где каждому символу (заглавной или строчной букве, знаку препинания, иероглифу) соответствует последовательность из одного или более разрядов числа, записанного в одной из позиционных систем счисления. В таблицы кодов также входят управляющие последовательности (тоже числа в одной из позиционных систем счисления), которые заставляют ЭВМ выполнять некоторые действия (например, подать звуковой сигнал с внутреннего динамика).
В целях, обозначенных выше, придумаем небольшой скрипт на языке Bash (см. также варианты решения подобной задачи на других языках программирования ).
Создадим пустой файл, запишем туда программу, сохраним изменения в файле и отправим его на исполнение интерпретатору языка Bash. Последовательность символов «#:», находящаяся в начале строки, обозначает, что остальной текст в строке является командой среды GNU/Linux. Текст в круглых скобках является комментарием и не должен вводиться пользователем.
Вот программа, которую можно записать в myfile1:
В Интернет размещено множество публикаций, посвящённых ASCII. Материал, ссылка на который обозначена выше, хорош тем, что приводимая в нём таблица разделена на несколько частей: управляющие последовательности (control characters), печатные символы (printable characters), а также расширенные коды (the extended ASCII codes) для таблицы кодов (кодировки) ISO 8859-1, включающей в себя ASCII как составную часть.
Для представления всех базовых символов (латинского алфавита, знаков препинания и управляющих последовательностей), содержащихся в таблице ASCII, требуется семь двоичных разрядов (7 бит). Добавление восьмого разряда делает таблицу «расширенной» и позволяет увеличить количество доступных с её помощью символов. К таким символам могут относиться буквы какого-либо национального алфавита. Например, кодировка ISO 8859-5 разработана как расширение ASCII для оторбражения кириллицы.
Давайте приведём пример одного и того же текста в разных кодировках. Пусть это будет фраза на русском языке: «Привет, Мир!».
Каждому символу (даже пробелу между запятой и буквой «М»), входящему в состав фразы «Привет, Мир!» должен соответствовать цифровой код в одной из позиционных систем счисления. Чаще всего для такого кодирования используется шестнадцатеричная система счисления, которая, впрочем, является результатом преобразования двоичных последовательностей в удобный для представления больших чисел вид (один разряд шестнадцатеричной системы счисления может соответствовать числу, для описания которого требуется аж четыре разряда в двоичной системе счисления).
Итак, построим таблицу соответствий каждого из символов текста «Привет, Мир!» и его числового представления в кодировках Unicode (форматы UTF-8, UTF-16 и UTF-32), KOI8-R и Windows-1251.
Шестнадцатеричное представление кода в формате UTF-8
Код символа в формате UTF-32BE
Код символа в формате UTF-32LE
Давайте теперь проведём эксперимент. Запишем текст в файл, а потом проверим каким образом меняется содержимое файла от того, в какой кодировке находится текст. Запустите интерпретатор команд среды GNU/Linux (например, Bash) и выполните следующую команду.
По этой команде текст « Привет, Мир! » в кодировке, используемой в вашей операционной системе по-умолчанию, будет записан в файл с именем test (убедитесь, что до этого в вашем рабочем каталоге не существовало файлов с таким же именем, иначе они будут повреждены, то есть заменены файлом, с одной единственной строкой « Привет, Мир! »).
diff сообщает о том, что файлы отличаются друг от друга. Напомним, что операционная система, в который мы проводим сравнение файлов, использует UTF-8 как кодировку по-умолчанию.
Теперь мы на практике убедились, что если записать два одинаковых текстовых сообщения в разных кодировках, они почти наверняка окажутся для компьютера неэквивалентными! Почему «почти наверняка»? Мы исходим из предположения о том, что одинаковые текстовые сообщения написаны с использованием кириллицы (или любого другого алфавита отличного от латиницы, не содержащей модифицированных букв). В частности, в рассмотренном выше примере проверялось содержание файлов с текстом на русском языке. Буквы латинского алфавита в современных вычислительных системах в абсолютном большинстве случаев кодируются на основе стандарта ASCII (о нём говорилось выше) и поэтому если по аналогии с представленным ранее примером создать файлы в разных кодировках, но уже с текстом « Hello, World! », программа diff не сможет найти отличий между содержимым некоторых из этих файлов (test, test-koi8-r, test-cp-1251). Даже программа md5sum вычислит одинаковые контрольные суммы для test, test-koi8-r и test-cp-1251. Если же мы попробуем посчитать контрольные суммы для файлов, содержащих сообщения на русском языке, получим следующий результат.
Важно отметить, что особенности работы программы iconv являются причиной того, что файлы test-u16 и test-u16LE отличаются друг от друга только наличием метки порядка байтов в начале файла (то же справедливо для пары test-u32 и test-u32LE ).
Как же так получается, что файлы с текстом на русском языке отличаются друг от друга, если буквы кириллицы записаны в разных кодировках? Дело в том, разные кодировки сопоставляют одним и тем же буквам кириллицы разные последовательности чисел. Давайте убедимся в этом на практике. С помощью программы xxd (или, если хотите, hexedit ) проверим содержимое наших файлов с текстом на русском языке.
Также приведём вывод xxd в двоичной форме (крайняя колонка слева содержит шестнадцатеричный адрес байта относительно начала файла).
Проанализируем полученный результат. Из документации известны следующие положения.
Таким образом, если программист не предусмотрел возможности работы с текстом, находящимся в разных кодировках, его программа просто не будет знать, что ей делать с числами, соответствующими символам кириллицы (или любого другого алфавита). Например, xxd не умеет выводить текст на русском языке в формате UTF-8 и поэтому вместо кириллических букв она печатает точки (см. ранее). А вот с текстом в кодировке ASCII она (программа xxd) справляется легко:
Возникает вопрос: С какими кодировками должны уметь работать наши программы? Здесь всё зависит от целей, которые мы перед собой ставим. Если речь идёт о попытке заработать деньги на программе, то она должна поддерживать работу с кодировками, которыми пользуются её потенциальные покупатели и пользователи. В общем случае, разумнее всего научить программу понимать Unicode (UTF-8), KOI8-R и Windows-1251 (UTF-16 пригодится для программ, работающих с иероглифами).
Unicode является наиболее перспективной из современных систем кодирования текста. Во-первых, она подробно документирована и активно поддерживается крупными организациями и фирмами. Во-вторых, с её помощью можно работать с большим количеством национальных алфавитов (однобайтовые кодировки, например, KOI8-R или Windows-1251 поддерживают только латинские буквы и кириллицу).
Велика вероятность, что Вам, уважаемый читатель, часто придётся иметь дело с Unicode, поэтому остановимся подробнее на том, по каким принципам этот стандарт предлагает преобразовывать числа в текст и наоборот.
Стандарт Unicode представляет из себя систему кодирования символов, предназначенную для применения в процессе взаимодействия людей, являющихся носителями разных языков. Также в Unicode учитываются потребности пользователей, имеющих дело с текстами, содержащими редко встречающиеся печатные знаки. По большому счёту этот стандарт призван помочь реализовать унифицированный подход к обработке текстовой информации в вычислительных системах и сетях всех уровней (от локального до глобального).
Символы, имеющие отношение к кириллице размещены в первой группе кодов (Basic Multilingual Plane) стандарта Unicode по адресам от U+0400 до U+04FF (Cyrillic); от U+0500 до U+052F (Cyrillic Supplement) от U+2DE0 до U+2DFF (Cyrillic Extended-A); от U+A640 до U+A69F (Cyrillic Extended-B). Некоторую ценную информацию по поводу того, какие символы входят в каждую из перечисленных выше подгрупп, можно найти в статье «Кириллица в Юникоде», опубликованной в рамках проекта Wikipedia.
Unicode Character Table
Popular character sets
Symbols for Nickname
Symbols for Facebook
The Unicode standard
Unicode is a computing standard for the consistent encoding symbols. It was created in 1991. It’s just a table, which shows glyphs position to encoding system. Encoding takes symbol from table, and tells font what should be painted. But computer can understand binary code only. So, encoding is used number 1 or 0 to represent characters. Like In Morse code dots and dashes represents letters and digits. Each unit (1 or 0) is calling bit. 16 bits is two byte. Most known and often used coding is UTF-8. It needs 1 or 4 bytes to represent each symbol. Older coding types takes only 1 byte, so they can’t contains enough glyphs to supply more than one language.
Unicode symbols
Each Unicode character has its own number and HTML-code. Example: Cyrillic capital letter Э has number U+042D (042D – it is hexadecimal number), code ъ. In a table, letter Э located at intersection line no. 0420 and column D. If you want to know number of some Unicode symbol, you may found it in a table. Or paste it to the search string. Or search by description («Cyrillic letter E»). On the symbol page you can see how it’s looking like in different fonts and operating systems. You may copy this and paste it to Word or Facebook. Also, there are several character sets on this site for more comfortable coping.
Different part of the Unicode table includes a lot characters of different languages. Almost all writing systems using these days represent. Latin, Arabic, Cyrillic, hieroglyphs, pictographic. Letters, digits, punctuation. Also Unicode standard covers a lot of dead scripts (abugidas, syllabaries) with the historical purpose. Many other symbols, which are not belong specific writing system coded too. It’s arrows, stars, control characters etc. All humanity needs to produce high-quality text.
Unicode standard doesn’t freeze, it continues to evolve. In June 2015 was released version 8.0. More than 120 thousands characters coded for now. The Consortium does not create new symbols, just add often used. Faces (emoji) included because it was often used by Japanese mobile operators. But some units does not containing a matter of principle. There are not trademarks in Unicode table, even Windows flag or registered trademark of apple.
© Unicode Character Table, 2012–2021.
Unicode® is a registered trademark of Unicode, Inc. in the United States and other countries. This site is not affiliated, associated, authorized, endorsed by, or in any way officially connected with Unicode, Inc. (aka The Unicode Consortium). For the official Unicode website, please go to www.unicode.org.
This site uses 🍪cookies to ensure that you get the best experience. Read more