Кодирование информации – это процедура преобразования данных. Она относится к основным информационным процессам. Преобразование данных может производиться как с изменением содержания, так и без него. В первом случае пользователю предстоит иметь дело с новой информацией, во втором – с ее переводом с одного языка на другой, но с сохранением имеющегося смысла. Эта операция и называется кодированием.
Данные могут быть закодированы различными способами. Это необходимо для обеспечения более удобного представления сведений, а также сокрытия содержания. Кодирование может быть реализовано относительно самых разных данных – от обычного текста до видео и звука.
Далее предстоит изучить существующие текстовые кодировки. Особое внимание нужно уделить Unicode и UTF-8. Эти варианты шифрования цифровых материалов являются наиболее распространенными в современных компьютерах. Предложенная информация будет полезна как обычным ПК-пользователям, так и IT-специалистам.
Наиболее распространенные кодировки
Кодировкой символов называется процесс присваивания номеров графическим символам. Особенно это касается элементов человеческих языков. Числовые значения, формирующие кодировку, носят название «кодовых точек». Совместно они представляют собой так называемое «кодовое пространство» или «карту символов». Эти компоненты необходимы для шифрования и дешифрования информации.
Буквы и алфавит кодируются при помощи определенных стандартов. Они меняются в зависимости от выбранного человеком языка, а также от операционной системы на устройстве. Наиболее распространенными из них являются:
- ISO;
- ASCII;
- KOI-8;
- CP866;
- Windows 1251;
- Unicode.
Чаще всего пользователи и IT-специалисты имеют дело с ASCII и Unicode (он поддерживает несколько версий). Далее предложенные кодировки будут изучены более подробно. Особое внимание уделено Unicode, а также его разновидности UTF-8.
ASCII – базовая кодировка
ASCII (или «Аски») – это самый первый стандарт кодировки символов. Он предусматривает в своем составе английский алфавит (латиницу). Состоит из 128 уникальных символов. Их можно разделить на:
- печатные элементы;
- специальные (управляющие) символы.
ASCII – таблица, поддерживающая:
- арабские цифры;
- существующие знаки препинания;
- латинские буквы;
- служебные символы.
Данный стандарт предусматривает шифрование символов 7 битами, но со временем он был расширен до 1 байта (или 8 бит). Этот прием позволил задействовать уже не 128, а 256 разнообразных символов. Их можно было закодировать при помощи одного байта.
Существуют разнообразные расширенные ASCII-стандарты. Они начали включать в себя символы национальных языков, а не только ранее существующую латиницу.
ISO
ISO – стандарт, представленный 8 битами. Младшая группа символов здесь представляет собой «базовый» ASCII, а старшая группа отводится под разнообразные языки. Соответствующая кодировка является расширенной версией Аски.
Ее примерами могут быть такие варианты как:
- 8859-0 – новый европейский вариант;
- 8859-5 – поддержка кириллицы;
- 8859-1 – европейские языки и языки алфавита Латинской Америки;
- 8859-2 – Восточная Европа.
ISO 8859-5 – это самая первая попытка внедрения в цифровые устройства специального стандарта шифрования кириллицы. Он до сих пор встречается в некоторых организациях – тех, что занимаются разработкой программного обеспечения с поддержкой обработки кириллических символов. Примерами могут быть решения OpenVMS и разнообразные базы данных.
KOI8-R
Еще один расширенный вариант представления ASCII. Она предназначается для работы с символами русского алфавита. Этот стандарт является очень старым. Он появился раньше некоторых остальных.
Кириллица здесь располагается в верхней части ASCII так, чтобы произношение алфавита соответствовало аналогам английского алфавита в нижней части таблицы. Это значить, что, если убрать в тексте на KOI8 восьмой бит каждого элемента, в итоге получится хорошо читаемая информация, но на английском языке.
KOI8 поддерживает несколько диалектов:
- KOI8-R – для русского языка;
- KOI8-U – для украинского алфавита.
KOI8-R также поддерживает болгарскую кириллицу. С ее помощью удалось сформировать первые кириллические символы для цифровых и компьютерных устройств. На данный момент в Болгарии пользуется спросом другой стандарт – Windows -1251.
KIO8-R имеет огромный спрос в Интернете. Он может рассматриваться как полноценный стандарт для русской кириллицы в Сети.
CP866
Альтернативная кодировка от IBM. Это вторая попытка использовать символы русского алфавита в компьютерной технике. CP866 – это одна из расширенных версий ASCII.
Здесь первая часть полностью совпадает с базовой версией Аски, а нижняя часть позволяла закодировать дополнительные 128 символов. В них были включены как русские буквы, так и псевдографика.
Windows-1251
Windows -1251 – это еще одна расширенная версия ASCII. Данный стандарт был разработан корпорацией Microsoft. Появление соответствующей кодировки связано с ростом развития популярности графических операционных систем.
В Windows-1251 была убрана псевдографика. За счет этой особенности образовалась целая новая группа стандартов кодирования, которая выступала расширенной интерпретацией ASCII. Текстовые символы здесь могут быть зашифрованы при помощи всего 1 байта информации. Соответствующая группа была отнесена к ANSI-кодировкам. Они были разработаны американским институтом стандартизации. ANSI поддерживали не только кириллицу, но и русский алфавит. Windows-1251 – наглядный тому пример.
Вместо псевдографики здесь было выделено пространство для:
- славянских языков;
- знаков русской типографии.
В Windows-1251 отсутствует символ ударения. Совместимость с CP866 этот вариант не поддерживает.
Сейчас Windows-1251 активно используется в операционных системах Windows. Он чаще всего встречается в старых версиях ОС – начала 90-х годов. Кириллица в Windows-1251 отображается в алфавитном порядке.
Unicode
Unicode – это универсальный способ шифрования информации. Он появился из-за невозможности уместить в одном байте все языковые группы южно-восточной Азии. Unicode был разработан в 1991 году некоммерческой организацией «Консорциум Юникода».
Этот подход активно используется в Интернете. Коды в нем разделяются на несколько областей. Одна из них включает в себя символы ASCII. Далее размещаются символы других систем письменности, технические символы и разнообразные пунктуационные знаки. Некоторая часть кодов зарезервирована для использования в будущем.
Unicode имеет несколько версий:
Юникод можно рассматривать как частичную реализацию ISO. На данный момент он предусматривает около 40 000 распределенных под символы позиций из 65 535 доступных (по 2 байта на каждый элемент или букву). В 1998 году Unicode получил возможность шифрования и дешифрования знака «евро».
Далее предстоит рассмотреть версии Unicode более подробно. Особое внимание будет уделено UTF8 — как самому распространенному варианту Юникода.
UTF-32
Первая реализация Unicode. Цифра в ее названии указывает на биты, используемые для шифрования одного символа или знака. 32 бита – это 4 байта информации. Это значит, что для шифрования одной буквы в UTF-32 требуется 4 байта.
Данный подход привел к тому, что при переводе документа из ASCII в Unicode его вес значительно увеличивался. А именно – в 4 раза. Подобные изменения стали неоправданными – основная масса европейских стран не нуждалось в огромном количестве символов. UTF-32 со временем стал устаревать. Ему на замену пришел новый вариант Юникода.
UTF-16
UTF-16 – более совершенная и удобная разработка Unicode. По умолчанию он используется для всех символов, используемых в компьютерной технике. Здесь для шифрования одного символа необходимо использовать 2 байта или 16 бит.
Используя UTF-16, получится закодировать 65 536 символов. Они выступают базовым пространством всего Юникода. UTF-16 уменьшил размер исходного документа при преобразовании с ASCII в 2 раза, а не в 4.
UTF-16 все равно не принес особого удовлетворения. Особенно это касалось тех, кто говорит и пишет преимущественно на английском языке. Получаемые документы с использованием этого стандарта все равно были достаточно большими.
UTF-16 можно увидеть в любой Windows. Для просмотра соответствующей таблицы необходимо:
- Перейти в «Пуск».
- Посетить службу «Служебные». Она находится в разделе «Программы»–«Стандартные».
- Выбрать в открывшемся меню «Таблица…».
- В дополнительных параметрах открывшегося окна установить Юникод.
Кодировка UTF 16 в конечном итоге смогла поддерживать около 1 миллиона символов, доступных для шифрования. Но достаточно большой объем исходных файлов, в которых использовался рассматриваемый стандарт, привел к образованию новой версии Юникода.
Новая версия Unicode
UTF-8 – самая последняя версия Юникода. Она будет рассмотрена более подробно далее. UTF-8 – 8-битный формат преобразования Unicode. Он является одним из общепринятых и стандартизированных текстовых кодировок. С помощью него удается хранить символы в Unicode.
Соответствующая кодировка стала широко использоваться. Она встречается о веб-пространствах и операционных системах. UTF-8 появился 2 сентября 1992 года. Он также называется Юникодом с переменной длиной.
Несмотря на цифру 8 в названии стандарта, она все равно обладает разной длиной. Каждый символ может быть закодирован последовательностью от 1 до 6 байт включительно. Чаще всего стандарт требует до 4 байт для шифрования одного элемента текста.
Кириллица в этой версии Юникода кодируется при помощи 2 байт, а грузинские и символы некоторых других языков мира – 3 байтами и более.
UTF-8 обладает наилучшей совместимостью со старыми операционными системами, в которых использовались символы по 1 байту. Рассматриваемый стандарт выделяется тем, что он поддерживает базовую часть ASCII в своем составе. Это позволяет приложениям, не понимающим Юникод, работать с UTF-8.
Данный метод шифрования поддерживает не только совместимость с Аски, но и любые 7-битные символы. Они будут отображаться «как есть». Остальные выдают пользователям мусор (шум). Из-за этого, если в дешифрованном документе много пространства занимают знаки препинания, пробел и латинские буквы, новый стандарт выигрывает по объему по сравнению с UTF-16.
Принцип кодирования
Зашифровать информацию при помощи UTF-8 получится в несколько шагов. Этот принцип стандартизирован в RFC 3629. Он включает в себя следующие шаги:
- Определить количество байтов (так называемых октетов), необходимых для шифрования того или иного символа. Номер элемента нужно взять из стандарта Unicode.
- Установить старшие биты первого октета так, чтобы они соответствовали количеству необходимых октетов, определенных на предыдущем шаге. Это приводит к тому, что нужно использовать записи: 0xxxxxxx – для шифрования с одним октетом, 110xxxxx – для двух октетов, 1110xxxx – при трех байтах и 11110xxx – если нужно использовать 4 октета.
- Если для шифрования необходимо выделить более одного октета, то в октетах 2-4 два старших бита всегда устанавливаются равными 10xxxxxx. За счет этого удается легко отличить первый октет в потоке. Его старшие биты никогда не будут равны 10xxxxxxx.
- Установить значащие биты октетов в соответствии с номером символа Юникода, представленном в двоичном коде. Заполнение начинается с младших битов номера символа. Они подставляются в младшие биты последнего октета. Далее операция продолжается справа налево до первого октета. Свободные биты первого октета требуется заполнить нулями.
Выше можно увидеть таблицу, которая поможет выполнить первый шаг в заданном алгоритме при определении октетов.
Алгоритм дешифрования
Основы 8-битного кодирования были представлены выше. Текст, зашифрованный в UTF8, необходимо расшифровывать для дальнейшего использования. Организации и частные лица часто пользуются для этого специальными программами-декодировщиками. Они могут быть созданы при помощи самых разных языков программирования.
Примером может послужить сервис «Декодер онлайн». Пользоваться им рекомендуется так:
- Выставить в левой части в выпадающем списке под «Декодер онлайн» значение UTF-8.
- Указать форму представления преобразованного исходного текста.
- Вставить в пустую область (в поле слева) данные, которые требуется расшифровать.
- Нажать на кнопку «Расшифровать».
Результат преобразования появится в окне справа. Самостоятельно дешифрование проводить не рекомендуется – это долгий и не всегда простой процесс.
Установка в HTML и PHP
UTF-8 – версия Юникода с переменной длиной. Она предусматривает шифрование разным количеством байт. Данный вариант широко используется в Интернете. Примером могут послужить веб-страницы.
Чтобы установить UTF8 для HTML-документа, необходимо задействовать тег <meta>. Он помогает объединять в себе значения метатегов в виде атрибутов.
Метатеги нужны при передаче и хранении информации, предназначенной для браузеров, а также различных поисковых систем. У <meta> есть атрибут charset. Он поможет установить кодировку веб-сайта:
UTF-8 и другие форматы кодировок можно задавать отдельным элементам на сайте. Примером служит ссылка. Для реализации задачи необходимо также использовать атрибут charset. Его значение – это желаемый способ кодирования:
Многие страницы в Интернете являются динамически созданными. Для их формирования используются серверные языки разработки. Наиболее распространенным вариантом является PHP. У него есть функция header(), используемая для установки и модификации значений заголовка. Она предусматривает следующий синтаксис:
Для корректного задания в PHP кодировки UTF-8 необходимо использовать вызов header() в исходном коде выше всех остальных HTML-тегов/
Работа с базами данных
Рассматриваемый вид Юникода, использующий от 1 до 6 байт для шифрования, часто встречается при работе с базами данных. Далее будет приведен пример выставления UTF-8 в MySQL. Эта СУБД выступает наиболее распространенной среди всех существующих. Она часто используется в сайтостроении.
Для установки UTF-8 с переменным количеством байт необходимо использовать документ my.ini. Его можно обнаружить по пути:/usr/local/mysql-5.5. В соответствующем документе необходимо поменять значение сразу нескольких полей на UTF-8:
- default-character-set;
- character-set-server;
- init-connect = «set names».
После этого предстоит добавить строчку skip-character-set-client-handshake. Аналогичные изменения можно применять не только для всех баз данных сервера, но и для отдельно взятых БД. Для этого нужно действовать через пользовательский интерфейс оболочки PHPMyAdmin.
Какие кодировки существуют для современных компьютеров и сколько байт они используют для шифрования одного символа, понятно. Лучше разобраться с UTF-8, ASCII и другими методами кодирования помогут специальные компьютерные курсы.
Хотите освоить современную IT-специальность? Огромный выбор курсов по востребованным IT-направлениям есть в Otus!
<!DOCTYPE html>
<html dir="ltr" lang="ru-RU">
<head>
<meta charset="UTF-8" />
<meta http-equiv="x-ua-compatible" content="ie=edge" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<link rel="profile" href="http://gmpg.org/xfn/11" />
<title>Стандарты Юникода и другие распространенные кодировки OTUS</title>
<!-- All in One SEO 4.5.2.1 - aioseo.com -->
<meta name="description" content="Кодирование информации – это процедура преобразования данных. Она относится к основным информационным процессам. Преобразование данных может производиться как с изменением содержания, так и без него. В первом случае пользователю предстоит иметь дело с новой информацией, во втором – с ее переводом с одного языка на другой, но с сохранением имеющегося смысла. Эта операция и называется" />
<meta name="robots" content="max-image-preview:large" />
<link rel="canonical" href="https://otus.ru/journal/standarty-junikoda-i-drugie-rasprostranennye-kodirovki/" />
<meta name="generator" content="All in One SEO (AIOSEO) 4.5.2.1" />
<script type="application/ld+json" class="aioseo-schema">
{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/otus.ru\/journal\/standarty-junikoda-i-drugie-rasprostranennye-kodirovki\/#article","name":"\u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u044b \u042e\u043d\u0438\u043a\u043e\u0434\u0430 \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u043d\u044b\u0435 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0438 OTUS","headline":"\u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u044b \u042e\u043d\u0438\u043a\u043e\u0434\u0430 \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u043d\u044b\u0435 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0438","author":{"@id":"https:\/\/otus.ru\/journal\/author\/a-pavlenko\/#author"},"publisher":{"@id":"https:\/\/otus.ru\/journal\/#organization"},"image":{"@type":"ImageObject","url":"https:\/\/otus.ru\/journal\/wp-content\/uploads\/2024\/04\/oj-1080x720-60.jpg","width":2245,"height":1587},"datePublished":"2024-04-07T20:19:08+00:00","dateModified":"2024-04-07T20:19:11+00:00","inLanguage":"ru-RU","mainEntityOfPage":{"@id":"https:\/\/otus.ru\/journal\/standarty-junikoda-i-drugie-rasprostranennye-kodirovki\/#webpage"},"isPartOf":{"@id":"https:\/\/otus.ru\/journal\/standarty-junikoda-i-drugie-rasprostranennye-kodirovki\/#webpage"},"articleSection":"\u041f\u043e\u043b\u0435\u0437\u043d\u043e\u0435, \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0430, \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435"},{"@type":"BreadcrumbList","@id":"https:\/\/otus.ru\/journal\/standarty-junikoda-i-drugie-rasprostranennye-kodirovki\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/otus.ru\/journal\/#listItem","position":1,"name":"\u0413\u043b\u0430\u0432\u043d\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430","item":"https:\/\/otus.ru\/journal\/","nextItem":"https:\/\/otus.ru\/journal\/standarty-junikoda-i-drugie-rasprostranennye-kodirovki\/#listItem"},{"@type":"ListItem","@id":"https:\/\/otus.ru\/journal\/standarty-junikoda-i-drugie-rasprostranennye-kodirovki\/#listItem","position":2,"name":"\u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u044b \u042e\u043d\u0438\u043a\u043e\u0434\u0430 \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u043d\u044b\u0435 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0438","previousItem":"https:\/\/otus.ru\/journal\/#listItem"}]},{"@type":"Organization","@id":"https:\/\/otus.ru\/journal\/#organization","name":"\u041e\u0442\u0443\u0441 \u043e\u043d\u043b\u0430\u0439\u043d-\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435","url":"https:\/\/otus.ru\/journal\/","sameAs":["https:\/\/www.youtube.com\/channel\/UCetgtvy93o3i3CvyGXKFU3g"],"contactPoint":{"@type":"ContactPoint","telephone":"+74999389202","contactType":"Customer Support"}},{"@type":"Person","@id":"https:\/\/otus.ru\/journal\/author\/a-pavlenko\/#author","url":"https:\/\/otus.ru\/journal\/author\/a-pavlenko\/","name":"A. Pavlenko","image":{"@type":"ImageObject","@id":"https:\/\/otus.ru\/journal\/standarty-junikoda-i-drugie-rasprostranennye-kodirovki\/#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/d4c499a104d7c2522fa41f89e6819499?s=96&d=mm&r=g","width":96,"height":96,"caption":"A. Pavlenko"}},{"@type":"WebPage","@id":"https:\/\/otus.ru\/journal\/standarty-junikoda-i-drugie-rasprostranennye-kodirovki\/#webpage","url":"https:\/\/otus.ru\/journal\/standarty-junikoda-i-drugie-rasprostranennye-kodirovki\/","name":"\u0421\u0442\u0430\u043d\u0434\u0430\u0440\u0442\u044b \u042e\u043d\u0438\u043a\u043e\u0434\u0430 \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u0440\u0430\u0441\u043f\u0440\u043e\u0441\u0442\u0440\u0430\u043d\u0435\u043d\u043d\u044b\u0435 \u043a\u043e\u0434\u0438\u0440\u043e\u0432\u043a\u0438 OTUS","description":"\u041a\u043e\u0434\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u2013 \u044d\u0442\u043e \u043f\u0440\u043e\u0446\u0435\u0434\u0443\u0440\u0430 \u043f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445. \u041e\u043d\u0430 \u043e\u0442\u043d\u043e\u0441\u0438\u0442\u0441\u044f \u043a \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u043c \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u043c \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430\u043c. \u041f\u0440\u0435\u043e\u0431\u0440\u0430\u0437\u043e\u0432\u0430\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u044c\u0441\u044f \u043a\u0430\u043a \u0441 \u0438\u0437\u043c\u0435\u043d\u0435\u043d\u0438\u0435\u043c \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u043d\u0438\u044f, \u0442\u0430\u043a \u0438 \u0431\u0435\u0437 \u043d\u0435\u0433\u043e. \u0412 \u043f\u0435\u0440\u0432\u043e\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044e \u043f\u0440\u0435\u0434\u0441\u0442\u043e\u0438\u0442 \u0438\u043c\u0435\u0442\u044c \u0434\u0435\u043b\u043e \u0441 \u043d\u043e\u0432\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0435\u0439, \u0432\u043e \u0432\u0442\u043e\u0440\u043e\u043c \u2013 \u0441 \u0435\u0435 \u043f\u0435\u0440\u0435\u0432\u043e\u0434\u043e\u043c \u0441 \u043e\u0434\u043d\u043e\u0433\u043e \u044f\u0437\u044b\u043a\u0430 \u043d\u0430 \u0434\u0440\u0443\u0433\u043e\u0439, \u043d\u043e \u0441 \u0441\u043e\u0445\u0440\u0430\u043d\u0435\u043d\u0438\u0435\u043c \u0438\u043c\u0435\u044e\u0449\u0435\u0433\u043e\u0441\u044f \u0441\u043c\u044b\u0441\u043b\u0430. \u042d\u0442\u0430 \u043e\u043f\u0435\u0440\u0430\u0446\u0438\u044f \u0438 \u043d\u0430\u0437\u044b\u0432\u0430\u0435\u0442\u0441\u044f","inLanguage":"ru-RU","isPartOf":{"@id":"https:\/\/otus.ru\/journal\/#website"},"breadcrumb":{"@id":"https:\/\/otus.ru\/journal\/standarty-junikoda-i-drugie-rasprostranennye-kodirovki\/#breadcrumblist"},"author":{"@id":"https:\/\/otus.ru\/journal\/author\/a-pavlenko\/#author"},"creator":{"@id":"https:\/\/otus.ru\/journal\/author\/a-pavlenko\/#author"},"image":{"@type":"ImageObject","url":"https:\/\/otus.ru\/journal\/wp-content\/uploads\/2024\/04\/oj-1080x720-60.jpg","@id":"https:\/\/otus.ru\/journal\/standarty-junikoda-i-drugie-rasprostranennye-kodirovki\/#mainImage","width":2245,"height":1587},"primaryImageOfPage":{"@id":"https:\/\/otus.ru\/journal\/standarty-junikoda-i-drugie-rasprostranennye-kodirovki\/#mainImage"},"datePublished":"2024-04-07T20:19:08+00:00","dateModified":"2024-04-07T20:19:11+00:00"},{"@type":"WebSite","@id":"https:\/\/otus.ru\/journal\/#website","url":"https:\/\/otus.ru\/journal\/","name":"OTUS JOURNAL","description":"Blog about IT","inLanguage":"ru-RU","publisher":{"@id":"https:\/\/otus.ru\/journal\/#organization"}}]}
</script>
<!-- All in One SEO -->
<link rel='dns-prefetch' href='//otus.ru' />
<link rel='dns-prefetch' href='//fonts.googleapis.com' />
<link rel='stylesheet' id='wp-block-library-css' href='https://otus.ru/journal/wp-includes/css/dist/block-library/style.min.css?ver=6.4.7' type='text/css' media='all' />
<style id='classic-theme-styles-inline-css' type='text/css'>
/*! This file is auto-generated */
.wp-block-button__link{color:#fff;background-color:#32373c;border-radius:9999px;box-shadow:none;text-decoration:none;padding:calc(.667em + 2px) calc(1.333em + 2px);font-size:1.125em}.wp-block-file__button{background:#32373c;color:#fff;text-decoration:none}
</style>
<style id='global-styles-inline-css' type='text/css'>
body{--wp--preset--color--black: #000000;--wp--preset--color--cyan-bluish-gray: #abb8c3;--wp--preset--color--white: #ffffff;--wp--preset--color--pale-pink: #f78da7;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--luminous-vivid-amber: #fcb900;--wp--preset--color--light-green-cyan: #7bdcb5;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--pale-cyan-blue: #8ed1fc;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--vivid-purple: #9b51e0;--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgba(6,147,227,1) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgba(252,185,0,1) 0%,rgba(255,105,0,1) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgba(255,105,0,1) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--font-size--small: 13px;--wp--preset--font-size--medium: 20px;--wp--preset--font-size--large: 36px;--wp--preset--font-size--x-large: 42px;--wp--preset--spacing--20: 0.44rem;--wp--preset--spacing--30: 0.67rem;--wp--preset--spacing--40: 1rem;--wp--preset--spacing--50: 1.5rem;--wp--preset--spacing--60: 2.25rem;--wp--preset--spacing--70: 3.38rem;--wp--preset--spacing--80: 5.06rem;--wp--preset--shadow--natural: 6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep: 12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp: 6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined: 6px 6px 0px -3px rgba(255, 255, 255, 1), 6px 6px rgba(0, 0, 0, 1);--wp--preset--shadow--crisp: 6px 6px 0px rgba(0, 0, 0, 1);}:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flow > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-flow > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-flow > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignleft{float: left;margin-inline-start: 0;margin-inline-end: 2em;}body .is-layout-constrained > .alignright{float: right;margin-inline-start: 2em;margin-inline-end: 0;}body .is-layout-constrained > .aligncenter{margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull)){max-width: var(--wp--style--global--content-size);margin-left: auto !important;margin-right: auto !important;}body .is-layout-constrained > .alignwide{max-width: var(--wp--style--global--wide-size);}body .is-layout-flex{display: flex;}body .is-layout-flex{flex-wrap: wrap;align-items: center;}body .is-layout-flex > *{margin: 0;}body .is-layout-grid{display: grid;}body .is-layout-grid > *{margin: 0;}:where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}:where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;}
.wp-block-navigation a:where(:not(.wp-element-button)){color: inherit;}
:where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;}
:where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}
.wp-block-pullquote{font-size: 1.5em;line-height: 1.6;}
</style>
<link rel='stylesheet' id='wbcr-comments-plus-url-span-css' href='https://otus.ru/journal/wp-content/plugins/clearfy/components/comments-plus/assets/css/url-span.css?ver=2.2.0' type='text/css' media='all' />
<link rel='stylesheet' id='wpel-style-css' href='https://otus.ru/journal/wp-content/plugins/wp-external-links/public/css/wpel.css?ver=2.59' type='text/css' media='all' />
<link rel='stylesheet' id='ez-toc-css' href='https://otus.ru/journal/wp-content/plugins/easy-table-of-contents/assets/css/screen.min.css?ver=2.0.61' type='text/css' media='all' />
<style id='ez-toc-inline-css' type='text/css'>
div#ez-toc-container .ez-toc-title {font-size: 120%;}div#ez-toc-container .ez-toc-title {font-weight: 500;}div#ez-toc-container ul li {font-size: 95%;}div#ez-toc-container nav ul ul li {font-size: 90%;}
.ez-toc-container-direction {direction: ltr;}.ez-toc-counter ul{counter-reset: item ;}.ez-toc-counter nav ul li a::before {content: counters(item, ".", decimal) ". ";display: inline-block;counter-increment: item;flex-grow: 0;flex-shrink: 0;margin-right: .2em; float: left; }.ez-toc-widget-direction {direction: ltr;}.ez-toc-widget-container ul{counter-reset: item ;}.ez-toc-widget-container nav ul li a::before {content: counters(item, ".", decimal) ". ";display: inline-block;counter-increment: item;flex-grow: 0;flex-shrink: 0;margin-right: .2em; float: left; }
</style>
<link rel='stylesheet' id='contentberg-fonts-css' href='https://fonts.googleapis.com/css?family=Roboto%3A400%2C500%2C700%7CPT+Serif%3A400%2C400i%2C600%7CIBM+Plex+Serif%3A500' type='text/css' media='all' />
<link rel='stylesheet' id='contentberg-core-css' href='https://otus.ru/journal/wp-content/themes/contentberg/style.css?ver=1.8.3' type='text/css' media='all' />
<link rel='stylesheet' id='contentberg-lightbox-css' href='https://otus.ru/journal/wp-content/themes/contentberg/css/lightbox.css?ver=1.8.3' type='text/css' media='all' />
<link rel='stylesheet' id='font-awesome-css' href='https://otus.ru/journal/wp-content/themes/contentberg/css/fontawesome/css/font-awesome.min.css?ver=1.8.3' type='text/css' media='all' />
<script type="text/javascript" id="breeze-prefetch-js-extra">
/* <![CDATA[ */
var breeze_prefetch = {"local_url":"https:\/\/otus.ru\/journal","ignore_remote_prefetch":"1","ignore_list":["\/wp-admin\/"]};
/* ]]> */
</script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/plugins/breeze/assets/js/js-front-end/breeze-prefetch-links.min.js" id="breeze-prefetch-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-includes/js/jquery/jquery.min.js" id="jquery-core-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-includes/js/jquery/jquery-migrate.min.js" id="jquery-migrate-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/lazysizes.js" id="lazysizes-js"></script>
<link rel="https://api.w.org/" href="https://otus.ru/journal/wp-json/" /><link rel="alternate" type="application/json" href="https://otus.ru/journal/wp-json/wp/v2/posts/9703" /><link rel='shortlink' href='https://otus.ru/journal/?p=9703' />
<link rel="alternate" type="application/json+oembed" href="https://otus.ru/journal/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fotus.ru%2Fjournal%2Fstandarty-junikoda-i-drugie-rasprostranennye-kodirovki%2F" />
<link rel="alternate" type="text/xml+oembed" href="https://otus.ru/journal/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fotus.ru%2Fjournal%2Fstandarty-junikoda-i-drugie-rasprostranennye-kodirovki%2F&format=xml" />
<script>var Sphere_Plugin = {"ajaxurl":"https:\/\/otus.ru\/journal\/wp-admin\/admin-ajax.php"};</script><link rel="icon" href="https://otus.ru/journal/wp-content/uploads/2020/11/cropped-OTUS_logo_OTUS-COMP-LOGO-WHITE-1-32x32.png" sizes="32x32" />
<link rel="icon" href="https://otus.ru/journal/wp-content/uploads/2020/11/cropped-OTUS_logo_OTUS-COMP-LOGO-WHITE-1-192x192.png" sizes="192x192" />
<link rel="apple-touch-icon" href="https://otus.ru/journal/wp-content/uploads/2020/11/cropped-OTUS_logo_OTUS-COMP-LOGO-WHITE-1-180x180.png" />
<meta name="msapplication-TileImage" content="https://otus.ru/journal/wp-content/uploads/2020/11/cropped-OTUS_logo_OTUS-COMP-LOGO-WHITE-1-270x270.png" />
<style type="text/css" id="wp-custom-css">
#menu-item-10406 .wpel-icon {
display: none;
}
#menu-item-10407 .wpel-icon {
display: none;
}
.otus-login-site a .wpel-icon {
display: none;
}
.menu-menju-navykov-container a .wpel-icon {
display: none;
}
.otus-login-site a
{
background: #ffd709;
border-radius: 12px;
color: #0f0f10;
font-size: 14px;
font-weight: 700;
line-height: 20px;
display: block;
text-align: center;
padding: 8px 25px;
}
.main-footer.dark {
background: linear-gradient(90deg, #a64fc5, #4f54e6);
border-color: transparent;
}
.main-footer.bold .copyright {
color: #fff;
}
.main-footer.bold .to-top i {
color: #fff;
}
.main-footer.bold .back-to-top {
color: #fff;
}
.nav__scroll {
overflow-x: auto;
-webkit-overflow-scrolling: touch;
}
.scrollable-menu .menu {
display: flex;
}
.nav__scroll
{
background: linear-gradient(90deg, #a64fc5, #4f54e6);
}
.scrollable-menu .menu .menu-item {
flex: 0 0 auto;
padding: 15px 15px;
}
.scrollable-menu .menu .menu-item a {
color: #fff;
}
.nav__scroll::-webkit-scrollbar{background-color:#fff;height:5px;}
.nav__scroll::-webkit-scrollbar-thumb{background-color:#dcdcdc;}
.nav__scroll::-webkit-scrollbar-track{-webkit-border-radius:0;border-radius:0;background-color:#fff;}/
body {
min-width: 320px;
}
.banner-click img {
margin: 0 auto;
display: block;
}
.banner-click {
cursor: pointer;
}
.banner-footer-area {
margin-bottom: 20px;
}
.banner-left-area {
margin-top: 40px;
} </style>
<!--Start VDZ Yandex Metrika Plugin-->
<!-- Yandex.Metrika counter --><script type="text/javascript" >(function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};m[i].l=1*new Date();k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)})(window, document, "script", "https://mc.yandex.ru/metrika/tag.js", "ym");ym(34531570, "init", {clickmap:true, trackLinks:true, accurateTrackBounce:true, webvisor:true, trackHash:true, ecommerce:"dataLayer"});</script>
<noscript><div><img src="https://mc.yandex.ru/watch/34531570" style="position:absolute; left:-9999px;" alt="" /></div></noscript>
<!-- /Yandex.Metrika counter --><!--START ADD EVENTS FROM CF7--><script type='text/javascript'>document.addEventListener( 'wpcf7submit', function( event ) {
//event.detail.contactFormId;
if(ym){
//console.log(event.detail);
ym(34531570, 'reachGoal', 'VDZ_SEND_CONTACT_FORM_7');
ym(34531570, 'params', {
page_url: window.location.href,
status: event.detail.status,
locale: event.detail.contactFormLocale,
form_id: event.detail.contactFormId,
});
}
}, false );
</script><!--END ADD EVENTS FROM CF7-->
<!--End VDZ Yandex Metrika Plugin-->
</head>
<body class="post-template-default single single-post postid-9703 single-format-standard right-sidebar lazy-normal has-lb">
<div class="main-wrap">
<header id="main-head" class="main-head head-nav-below has-search-modal simple simple-boxed">
<div class="inner inner-head" data-sticky-bar="0">
<div class="wrap cf wrap-head">
<div class="left-contain">
<span class="mobile-nav"><i class="fa fa-bars"></i></span>
<div class="title">
<a href="https://otus.ru/journal/" title="OTUS JOURNAL" rel="home" data-wpel-link="internal">
<span class="text-logo"><img src="/journal/wp-content/themes/contentberg/img/logo_site.svg" alt="OTUS JOURNAL"></span>
</a>
</div>
</div>
<div class="navigation-wrap inline">
<nav class="navigation inline simple light" data-sticky-bar="0">
<div class="menu-rubriki-container"><ul id="menu-rubriki" class="menu"><li id="menu-item-109" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-cat-1 menu-item-109"><a href="https://otus.ru/journal/category/pro-it/" data-wpel-link="internal"><span>Про IT</span></a></li>
<li id="menu-item-113" class="menu-item menu-item-type-taxonomy menu-item-object-category current-post-ancestor current-menu-parent current-post-parent menu-cat-4 menu-item-113"><a href="https://otus.ru/journal/category/polza/" data-wpel-link="internal"><span>Полезное</span></a></li>
<li id="menu-item-114" class="menu-item menu-item-type-taxonomy menu-item-object-category menu-cat-3 menu-item-114"><a href="https://otus.ru/journal/category/lifestyle/" data-wpel-link="internal"><span>Лайфстайл</span></a></li>
<li id="menu-item-10406" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10406"><a href="https://otus.ru/catalog/courses" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right"><span>Обучение</span><span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10407" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10407"><a href="https://otus.ru/about" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right"><span>Информация</span><span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
</ul></div> </nav>
</div>
<div class="actions">
<div class="otus-login-site">
<a href="https://otus.ru/login/" target="_blank" data-wpel-link="external" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Войти<span class="wpel-icon wpel-image wpel-icon-6"></span></a>
</div>
<a href="#" title="Search" class="search-link"><i class="fa fa-search"></i></a>
</div>
</div>
</div>
</header> <!-- .main-head -->
<div class="nav nav_disable nav_colored nav_transparent course-categories__nav nav__scroll ">
<div class="container wrap">
<div class="links inline simple light scrollable-menu">
<div class="menu-menju-navykov-container"><ul id="menu-menju-navykov" class="menu"><li id="menu-item-10413" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10413"><a href="https://otus.ru/categories/programming/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Программирование<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10414" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10414"><a href="https://otus.ru/categories/architecture/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Архитектура<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10415" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10415"><a href="https://otus.ru/categories/operations/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Инфраструктура<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10416" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10416"><a href="https://otus.ru/categories/information-security-courses/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Безопасность<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10417" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10417"><a href="https://otus.ru/categories/data-science/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Data Science<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10418" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10418"><a href="https://otus.ru/categories/gamedev/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">GameDev<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10419" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10419"><a href="https://otus.ru/categories/marketing-business/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Управление<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10420" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10420"><a href="https://otus.ru/categories/analytics/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Аналитика и анализ<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li id="menu-item-10421" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10421"><a href="https://otus.ru/categories/testing/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Тестирование<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
</ul></div> </div>
</div>
</div>
<div class="main wrap">
<div class="ts-row cf">
<div class="col-8 main-content cf">
<article id="post-9703" class="the-post post-9703 post type-post status-publish format-standard has-post-thumbnail category-polza tag-kodirovka tag-programmirovanie">
<header class="post-header the-post-header cf">
<div class="post-meta the-post-meta">
<span class="post-cat">
<a href="https://otus.ru/journal/category/polza/" class="category" data-wpel-link="internal">Полезное</a>
</span>
<h1 class="post-title">
Стандарты Юникода и другие распространенные кодировки
</h1>
<a href="https://otus.ru/journal/standarty-junikoda-i-drugie-rasprostranennye-kodirovki/" class="date-link" data-wpel-link="internal"><time class="post-date">7 апреля, 2024</time></a>
</div>
<div class="featured">
<a href="https://otus.ru/journal/wp-content/uploads/2024/04/oj-1080x720-60.jpg" class="image-link" data-wpel-link="internal"><img width="770" height="515" src="data:image/svg+xml,%3Csvg%20viewBox%3D%270%200%20770%20515%27%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%3E%3C%2Fsvg%3E" class="attachment-contentberg-main size-contentberg-main lazyload wp-post-image" alt="Стандарты Юникода и другие распространенные кодировки" title="Стандарты Юникода и другие распространенные кодировки" decoding="async" fetchpriority="high" data-srcset="https://otus.ru/journal/wp-content/uploads/2024/04/oj-1080x720-60-770x515.jpg 770w, https://otus.ru/journal/wp-content/uploads/2024/04/oj-1080x720-60-270x180.jpg 270w" data-src="https://otus.ru/journal/wp-content/uploads/2024/04/oj-1080x720-60-770x515.jpg" data-sizes="(max-width: 770px) 100vw, 770px" /> </a>
</div>
</header><!-- .post-header -->
<div class="post-content description cf entry-content content-normal">
<div id="ez-toc-container" class="ez-toc-v2_0_61 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction">
<div class="ez-toc-title-container">
<p class="ez-toc-title " >Содержание</p>
<span class="ez-toc-title-toggle"><a href="#" class="ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle" aria-label="Toggle Table of Content"><span class="ez-toc-js-icon-con"><span class=""><span class="eztoc-hide" style="display:none;">Toggle</span><span class="ez-toc-icon-toggle-span"><svg style="fill: #999;color:#999" xmlns="http://www.w3.org/2000/svg" class="list-377408" width="20px" height="20px" viewBox="0 0 24 24" fill="none"><path d="M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z" fill="currentColor"></path></svg><svg style="fill: #999;color:#999" class="arrow-unsorted-368013" xmlns="http://www.w3.org/2000/svg" width="10px" height="10px" viewBox="0 0 24 24" version="1.2" baseProfile="tiny"><path d="M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z"/></svg></span></span></span></a></span></div>
<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-1" href="#%D0%9D%D0%B0%D0%B8%D0%B1%D0%BE%D0%BB%D0%B5%D0%B5_%D1%80%D0%B0%D1%81%D0%BF%D1%80%D0%BE%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5_%D0%BA%D0%BE%D0%B4%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B8" title="Наиболее распространенные кодировки">Наиболее распространенные кодировки</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-2" href="#ASCII_%E2%80%93_%D0%B1%D0%B0%D0%B7%D0%BE%D0%B2%D0%B0%D1%8F_%D0%BA%D0%BE%D0%B4%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B0" title="ASCII – базовая кодировка">ASCII – базовая кодировка</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-3" href="#ISO" title="ISO">ISO</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-4" href="#KOI8-R" title="KOI8-R">KOI8-R</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-5" href="#CP866" title="CP866">CP866</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-6" href="#Windows-1251" title="Windows-1251">Windows-1251</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-7" href="#Unicode" title="Unicode">Unicode</a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-8" href="#UTF-32" title="UTF-32">UTF-32</a></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-9" href="#UTF-16" title="UTF-16">UTF-16</a></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-10" href="#%D0%9D%D0%BE%D0%B2%D0%B0%D1%8F_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D1%8F_Unicode" title="Новая версия Unicode">Новая версия Unicode</a><ul class='ez-toc-list-level-4' ><li class='ez-toc-heading-level-4'><a class="ez-toc-link ez-toc-heading-11" href="#%D0%9F%D1%80%D0%B8%D0%BD%D1%86%D0%B8%D0%BF_%D0%BA%D0%BE%D0%B4%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F" title="Принцип кодирования">Принцип кодирования</a></li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class="ez-toc-link ez-toc-heading-12" href="#%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%B4%D0%B5%D1%88%D0%B8%D1%84%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F" title="Алгоритм дешифрования">Алгоритм дешифрования</a></li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class="ez-toc-link ez-toc-heading-13" href="#%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B2_HTML_%D0%B8_PHP" title="Установка в HTML и PHP">Установка в HTML и PHP</a></li><li class='ez-toc-page-1 ez-toc-heading-level-4'><a class="ez-toc-link ez-toc-heading-14" href="#%D0%A0%D0%B0%D0%B1%D0%BE%D1%82%D0%B0_%D1%81_%D0%B1%D0%B0%D0%B7%D0%B0%D0%BC%D0%B8_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85" title="Работа с базами данных">Работа с базами данных</a></li></ul></li></ul></li></ul></nav></div>
<p>Кодирование информации – это процедура преобразования данных. Она относится к основным информационным процессам. Преобразование данных может производиться как с изменением содержания, так и без него. В первом случае пользователю предстоит иметь дело с новой информацией, во втором – с ее переводом с одного языка на другой, но с сохранением имеющегося смысла. Эта операция и называется кодированием.</p>
<p>Данные могут быть закодированы различными способами. Это необходимо для обеспечения более удобного представления сведений, а также сокрытия содержания. Кодирование может быть реализовано относительно самых разных данных – от обычного текста до видео и звука.</p>
<p>Далее предстоит изучить существующие текстовые кодировки. Особое внимание нужно уделить Unicode и UTF-8. Эти варианты шифрования цифровых материалов являются наиболее распространенными в современных компьютерах. Предложенная информация будет полезна как обычным ПК-пользователям, так и IT-специалистам.</p>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9D%D0%B0%D0%B8%D0%B1%D0%BE%D0%BB%D0%B5%D0%B5_%D1%80%D0%B0%D1%81%D0%BF%D1%80%D0%BE%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5_%D0%BA%D0%BE%D0%B4%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B8"></span>Наиболее распространенные кодировки<span class="ez-toc-section-end"></span></h2>
<p>Кодировкой символов называется процесс присваивания номеров графическим символам. Особенно это касается элементов человеческих языков. Числовые значения, формирующие кодировку, носят название «кодовых точек». Совместно они представляют собой так называемое «кодовое пространство» или «карту символов». Эти компоненты необходимы для шифрования и дешифрования информации.</p>
<p>Буквы и алфавит кодируются при помощи определенных стандартов. Они меняются в зависимости от выбранного человеком языка, а также от операционной системы на устройстве. Наиболее распространенными из них являются:</p>
<ul>
<li>ISO;</li>
<li>ASCII;</li>
<li>KOI-8;</li>
<li>CP866;</li>
<li>Windows 1251;</li>
<li>Unicode.</li>
</ul>
<p>Чаще всего пользователи и IT-специалисты имеют дело с ASCII и Unicode (он поддерживает несколько версий). Далее предложенные кодировки будут изучены более подробно. Особое внимание уделено Unicode, а также его разновидности UTF-8.</p>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="ASCII_%E2%80%93_%D0%B1%D0%B0%D0%B7%D0%BE%D0%B2%D0%B0%D1%8F_%D0%BA%D0%BE%D0%B4%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B0"></span>ASCII – базовая кодировка<span class="ez-toc-section-end"></span></h2>
<p>ASCII (или «Аски») – это самый первый стандарт кодировки символов. Он предусматривает в своем составе английский алфавит (латиницу). Состоит из 128 уникальных символов. Их можно разделить на:</p>
<ul>
<li>печатные элементы;</li>
<li>специальные (управляющие) символы.</li>
</ul>
<p>ASCII – таблица, поддерживающая:</p>
<ul>
<li>арабские цифры;</li>
<li>существующие знаки препинания;</li>
<li>латинские буквы;</li>
<li>служебные символы.</li>
</ul>
<p>Данный стандарт предусматривает шифрование символов 7 битами, но со временем он был расширен до 1 байта (или 8 бит). Этот прием позволил задействовать уже не 128, а 256 разнообразных символов. Их можно было закодировать при помощи одного байта.</p>
<p>Существуют разнообразные расширенные ASCII-стандарты. Они начали включать в себя символы национальных языков, а не только ранее существующую латиницу.</p>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="ISO"></span>ISO<span class="ez-toc-section-end"></span></h2>
<p>ISO – стандарт, представленный 8 битами. Младшая группа символов здесь представляет собой «базовый» ASCII, а старшая группа отводится под разнообразные языки. Соответствующая кодировка является расширенной версией Аски.</p>
<p>Ее примерами могут быть такие варианты как:</p>
<ul>
<li>8859-0 – новый европейский вариант;</li>
<li>8859-5 – поддержка кириллицы;</li>
<li>8859-1 – европейские языки и языки алфавита Латинской Америки;</li>
<li>8859-2 – Восточная Европа.</li>
</ul>
<p>ISO 8859-5 – это самая первая попытка внедрения в цифровые устройства специального стандарта шифрования кириллицы. Он до сих пор встречается в некоторых организациях – тех, что занимаются разработкой программного обеспечения с поддержкой обработки кириллических символов. Примерами могут быть решения OpenVMS и разнообразные базы данных.</p>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="KOI8-R"></span>KOI8-R<span class="ez-toc-section-end"></span></h2>
<p>Еще один расширенный вариант представления ASCII. Она предназначается для работы с символами русского алфавита. Этот стандарт является очень старым. Он появился раньше некоторых остальных.</p>
<p>Кириллица здесь располагается в верхней части ASCII так, чтобы произношение алфавита соответствовало аналогам английского алфавита в нижней части таблицы. Это значить, что, если убрать в тексте на KOI8 восьмой бит каждого элемента, в итоге получится хорошо читаемая информация, но на английском языке.</p>
<p>KOI8 поддерживает несколько диалектов:</p>
<ul>
<li>KOI8-R – для русского языка;</li>
<li>KOI8-U – для украинского алфавита.</li>
</ul>
<p>KOI8-R также поддерживает болгарскую кириллицу. С ее помощью удалось сформировать первые кириллические символы для цифровых и компьютерных устройств. На данный момент в Болгарии пользуется спросом другой стандарт – Windows -1251.</p>
<p>KIO8-R имеет огромный спрос в Интернете. Он может рассматриваться как полноценный стандарт для русской кириллицы в Сети.</p>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="CP866"></span>CP866<span class="ez-toc-section-end"></span></h2>
<p>Альтернативная кодировка от IBM. Это вторая попытка использовать символы русского алфавита в компьютерной технике. CP866 – это одна из расширенных версий ASCII.</p>
<p>Здесь первая часть полностью совпадает с базовой версией Аски, а нижняя часть позволяла закодировать дополнительные 128 символов. В них были включены как русские буквы, так и псевдографика.</p>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="Windows-1251"></span>Windows-1251<span class="ez-toc-section-end"></span></h2>
<p>Windows -1251 – это еще одна расширенная версия ASCII. Данный стандарт был разработан корпорацией Microsoft. Появление соответствующей кодировки связано с ростом развития популярности графических операционных систем.</p>
<p>В Windows-1251 была убрана псевдографика. За счет этой особенности образовалась целая новая группа стандартов кодирования, которая выступала расширенной интерпретацией ASCII. Текстовые символы здесь могут быть зашифрованы при помощи всего 1 байта информации. Соответствующая группа была отнесена к ANSI-кодировкам. Они были разработаны американским институтом стандартизации. ANSI поддерживали не только кириллицу, но и русский алфавит. Windows-1251 – наглядный тому пример.</p>
<p>Вместо псевдографики здесь было выделено пространство для:</p>
<ul>
<li>славянских языков;</li>
<li>знаков русской типографии.</li>
</ul>
<p>В Windows-1251 отсутствует символ ударения. Совместимость с CP866 этот вариант не поддерживает.</p>
<p>Сейчас Windows-1251 активно используется в операционных системах Windows. Он чаще всего встречается в старых версиях ОС – начала 90-х годов. Кириллица в Windows-1251 отображается в алфавитном порядке.</p>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="Unicode"></span>Unicode<span class="ez-toc-section-end"></span></h2>
<p>Unicode – это универсальный способ шифрования информации. Он появился из-за невозможности уместить в одном байте все языковые группы южно-восточной Азии. Unicode был разработан в 1991 году некоммерческой организацией «Консорциум Юникода».</p>
<p>Этот подход активно используется в Интернете. Коды в нем разделяются на несколько областей. Одна из них включает в себя символы ASCII. Далее размещаются символы других систем письменности, технические символы и разнообразные пунктуационные знаки. Некоторая часть кодов зарезервирована для использования в будущем.</p>
<p>Unicode имеет несколько версий:</p>
<ul>
<li>UTF-32;</li>
<li>UTF-16;</li>
<li>UTF-8.</li>
</ul>
<p>Юникод можно рассматривать как частичную реализацию ISO. На данный момент он предусматривает около 40 000 распределенных под символы позиций из 65 535 доступных (по 2 байта на каждый элемент или букву). В 1998 году Unicode получил возможность шифрования и дешифрования знака «евро».</p>
<p>Далее предстоит рассмотреть версии Unicode более подробно. Особое внимание будет уделено UTF8 — как самому распространенному варианту Юникода.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="UTF-32"></span>UTF-32<span class="ez-toc-section-end"></span></h3>
<p>Первая реализация Unicode. Цифра в ее названии указывает на биты, используемые для шифрования одного символа или знака. 32 бита – это 4 байта информации. Это значит, что для шифрования одной буквы в UTF-32 требуется 4 байта.</p>
<p>Данный подход привел к тому, что при переводе документа из ASCII в Unicode его вес значительно увеличивался. А именно – в 4 раза. Подобные изменения стали неоправданными – основная масса европейских стран не нуждалось в огромном количестве символов. UTF-32 со временем стал устаревать. Ему на замену пришел новый вариант Юникода.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="UTF-16"></span>UTF-16<span class="ez-toc-section-end"></span></h3>
<p>UTF-16 – более совершенная и удобная разработка Unicode. По умолчанию он используется для всех символов, используемых в компьютерной технике. Здесь для шифрования одного символа необходимо использовать 2 байта или 16 бит.</p>
<p>Используя UTF-16, получится закодировать 65 536 символов. Они выступают базовым пространством всего Юникода. UTF-16 уменьшил размер исходного документа при преобразовании с ASCII в 2 раза, а не в 4.</p>
<p>UTF-16 все равно не принес особого удовлетворения. Особенно это касалось тех, кто говорит и пишет преимущественно на английском языке. Получаемые документы с использованием этого стандарта все равно были достаточно большими.</p>
<p>UTF-16 можно увидеть в любой Windows. Для просмотра соответствующей таблицы необходимо:</p>
<ol>
<li>Перейти в «Пуск».</li>
<li>Посетить службу «Служебные». Она находится в разделе «Программы»–«Стандартные».</li>
<li>Выбрать в открывшемся меню «Таблица…».</li>
<li>В дополнительных параметрах открывшегося окна установить Юникод.</li>
</ol>
<p>Кодировка UTF 16 в конечном итоге смогла поддерживать около 1 миллиона символов, доступных для шифрования. Но достаточно большой объем исходных файлов, в которых использовался рассматриваемый стандарт, привел к образованию новой версии Юникода.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9D%D0%BE%D0%B2%D0%B0%D1%8F_%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D1%8F_Unicode"></span>Новая версия Unicode<span class="ez-toc-section-end"></span></h3>
<p>UTF-8 – самая последняя версия Юникода. Она будет рассмотрена более подробно далее. UTF-8 – 8-битный формат преобразования Unicode. Он является одним из общепринятых и стандартизированных текстовых кодировок. С помощью него удается хранить символы в Unicode.</p>
<p>Соответствующая кодировка стала широко использоваться. Она встречается о веб-пространствах и операционных системах. UTF-8 появился 2 сентября 1992 года. Он также называется Юникодом с переменной длиной.</p>
<p>Несмотря на цифру 8 в названии стандарта, она все равно обладает разной длиной. Каждый символ может быть закодирован последовательностью от 1 до 6 байт включительно. Чаще всего стандарт требует до 4 байт для шифрования одного элемента текста.</p>
<p>Кириллица в этой версии Юникода кодируется при помощи 2 байт, а грузинские и символы некоторых других языков мира – 3 байтами и более.</p>
<p>UTF-8 обладает наилучшей совместимостью со старыми операционными системами, в которых использовались символы по 1 байту. Рассматриваемый стандарт выделяется тем, что он поддерживает базовую часть ASCII в своем составе. Это позволяет приложениям, не понимающим Юникод, работать с UTF-8.</p>
<p>Данный метод шифрования поддерживает не только совместимость с Аски, но и любые 7-битные символы. Они будут отображаться «как есть». Остальные выдают пользователям мусор (шум). Из-за этого, если в дешифрованном документе много пространства занимают знаки препинания, пробел и латинские буквы, новый стандарт выигрывает по объему по сравнению с UTF-16.</p>
<h4 class="wp-block-heading"><span class="ez-toc-section" id="%D0%9F%D1%80%D0%B8%D0%BD%D1%86%D0%B8%D0%BF_%D0%BA%D0%BE%D0%B4%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F"></span><em>Принцип кодирования</em><span class="ez-toc-section-end"></span></h4>
<p>Зашифровать информацию при помощи UTF-8 получится в несколько шагов. Этот принцип стандартизирован в RFC 3629. Он включает в себя следующие шаги:</p>
<ol>
<li>Определить количество байтов (так называемых октетов), необходимых для шифрования того или иного символа. Номер элемента нужно взять из стандарта Unicode.</li>
<li>Установить старшие биты первого октета так, чтобы они соответствовали количеству необходимых октетов, определенных на предыдущем шаге. Это приводит к тому, что нужно использовать записи: 0xxxxxxx – для шифрования с одним октетом, 110xxxxx – для двух октетов, 1110xxxx – при трех байтах и 11110xxx – если нужно использовать 4 октета.</li>
<li>Если для шифрования необходимо выделить более одного октета, то в октетах 2-4 два старших бита всегда устанавливаются равными 10xxxxxx. За счет этого удается легко отличить первый октет в потоке. Его старшие биты никогда не будут равны 10xxxxxxx.</li>
<li>Установить значащие биты октетов в соответствии с номером символа Юникода, представленном в двоичном коде. Заполнение начинается с младших битов номера символа. Они подставляются в младшие биты последнего октета. Далее операция продолжается справа налево до первого октета. Свободные биты первого октета требуется заполнить нулями.</li>
</ol>
<figure class="wp-block-image"><img decoding="async" src="https://lh7-us.googleusercontent.com/kz7n0gGw0nmXblM07nyQ5Rs6nNl6qatRnLP4bQ33HCnKs9mBAw3WrZIM5T1hFrfCAH7-cH3f61KCtbG25dCmDhdiB9OHOH-qVSXHI1tO6r2C3NCbQq2HhxVtDQ3-QpQk-SPgpEn7M-HTStlmAGqLmA" alt="Стандарты Юникода и другие распространенные кодировки"/></figure>
<p>Выше можно увидеть таблицу, которая поможет выполнить первый шаг в заданном алгоритме при определении октетов.</p>
<h4 class="wp-block-heading"><span class="ez-toc-section" id="%D0%90%D0%BB%D0%B3%D0%BE%D1%80%D0%B8%D1%82%D0%BC_%D0%B4%D0%B5%D1%88%D0%B8%D1%84%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F"></span><em>Алгоритм дешифрования</em><span class="ez-toc-section-end"></span></h4>
<p>Основы 8-битного кодирования были представлены выше. Текст, зашифрованный в UTF8, необходимо расшифровывать для дальнейшего использования. Организации и частные лица часто пользуются для этого специальными программами-декодировщиками. Они могут быть созданы при помощи самых разных языков программирования.</p>
<p>Примером может послужить сервис «Декодер онлайн». Пользоваться им рекомендуется так:</p>
<ol>
<li>Выставить в левой части в выпадающем списке под «Декодер онлайн» значение UTF-8.</li>
<li>Указать форму представления преобразованного исходного текста.</li>
<li>Вставить в пустую область (в поле слева) данные, которые требуется расшифровать.</li>
<li>Нажать на кнопку «Расшифровать».</li>
</ol>
<p>Результат преобразования появится в окне справа. Самостоятельно дешифрование проводить не рекомендуется – это долгий и не всегда простой процесс.</p>
<h4 class="wp-block-heading"><span class="ez-toc-section" id="%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0_%D0%B2_HTML_%D0%B8_PHP"></span><em>Установка в HTML и PHP</em><span class="ez-toc-section-end"></span></h4>
<p>UTF-8 – версия Юникода с переменной длиной. Она предусматривает шифрование разным количеством байт. Данный вариант широко используется в Интернете. Примером могут послужить веб-страницы.</p>
<p>Чтобы установить UTF8 для HTML-документа, необходимо задействовать тег <meta>. Он помогает объединять в себе значения метатегов в виде атрибутов.</p>
<p>Метатеги нужны при передаче и хранении информации, предназначенной для браузеров, а также различных поисковых систем. У <meta> есть атрибут charset. Он поможет установить кодировку веб-сайта:</p>
<figure class="wp-block-image"><img decoding="async" src="https://lh7-us.googleusercontent.com/tfLYB0X2_VdecfOJYuaSh11UmKeRBou0BPlBsjb33FsU_QD5Y6zjC8fjMpoxZNeiU8JRaji477FLuW6L_0Kts6d4C3tpCVVoMlgJ38LG3nhwvtTu7L_058_YcY1DKUZDjpu7tEn3EBKBQeRdl8U_ZA" alt="Стандарты Юникода и другие распространенные кодировки"/></figure>
<p>UTF-8 и другие форматы кодировок можно задавать отдельным элементам на сайте. Примером служит ссылка. Для реализации задачи необходимо также использовать атрибут charset. Его значение – это желаемый способ кодирования:</p>
<figure class="wp-block-image"><img decoding="async" src="https://lh7-us.googleusercontent.com/xemOEO9TQ3ZvnCfD6fnTrc-zkok-UB3ys8MMI9GOy824Z6Bge6oA5ti0DLFv_9a_L4FtfjgVwjAzIG7ab6beZ_XOgDlww9YDQQ9Jwvjw2WE5ua-jZOO6OjtRnwGg7xhO76gqfxH7-bg8fdS0YXRDAg" alt="Стандарты Юникода и другие распространенные кодировки"/></figure>
<p>Многие страницы в Интернете являются динамически созданными. Для их формирования используются серверные языки разработки. Наиболее распространенным вариантом является PHP. У него есть функция header(), используемая для установки и модификации значений заголовка. Она предусматривает следующий синтаксис:</p>
<figure class="wp-block-image"><img decoding="async" src="https://lh7-us.googleusercontent.com/QEurNuZ6l145qdM_eq07O85RRuPFlbLhFbVujJ03eDpF-9NGeL5sHn9hwSUdRKwAse7LGIgpewEnKC8psYCtwvAm_dwqRZ9oNw0-9qd5w93sYPFsFBZKo17_jTWC-Og0LNtlVz_SX4dRHKe7PsMZxQ" alt="Стандарты Юникода и другие распространенные кодировки"/></figure>
<p>Для корректного задания в PHP кодировки UTF-8 необходимо использовать вызов header() в исходном коде выше всех остальных HTML-тегов/</p>
<h4 class="wp-block-heading"><span class="ez-toc-section" id="%D0%A0%D0%B0%D0%B1%D0%BE%D1%82%D0%B0_%D1%81_%D0%B1%D0%B0%D0%B7%D0%B0%D0%BC%D0%B8_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85"></span><em>Работа с базами данных</em><span class="ez-toc-section-end"></span></h4>
<p>Рассматриваемый вид Юникода, использующий от 1 до 6 байт для шифрования, часто встречается при работе с базами данных. Далее будет приведен пример выставления UTF-8 в MySQL. Эта СУБД выступает наиболее распространенной среди всех существующих. Она часто используется в сайтостроении.</p>
<p>Для установки UTF-8 с переменным количеством байт необходимо использовать документ my.ini. Его можно обнаружить по пути:/usr/local/mysql-5.5. В соответствующем документе необходимо поменять значение сразу нескольких полей на UTF-8:</p>
<ul>
<li>default-character-set;</li>
<li>character-set-server;</li>
<li>init-connect = «set names».</li>
</ul>
<p>После этого предстоит добавить строчку skip-character-set-client-handshake. Аналогичные изменения можно применять не только для всех баз данных сервера, но и для отдельно взятых БД. Для этого нужно действовать через пользовательский интерфейс оболочки PHPMyAdmin.</p>
<p>Какие кодировки существуют для современных компьютеров и сколько байт они используют для шифрования одного символа, понятно. Лучше разобраться с UTF-8, ASCII и другими методами кодирования помогут специальные компьютерные курсы.</p>
<p><em>Хотите освоить современную IT-специальность? Огромный выбор курсов по востребованным IT-направлениям есть в <a href="https://otus.ru/?utm_source=oj" target="_blank" rel="noreferrer noopener nofollow external" data-wpel-link="external" class="wpel-icon-right">Otus<span class="wpel-icon wpel-image wpel-icon-6"></span></a>!</em> </p>
</div><!-- .post-content -->
<div class="the-post-foot cf">
<div class="tag-share cf">
<div class="post-tags"><a href="https://otus.ru/journal/tag/kodirovka/" rel="tag" data-wpel-link="internal">кодировка</a><a href="https://otus.ru/journal/tag/programmirovanie/" rel="tag" data-wpel-link="internal">программирование</a></div>
<div class="post-share">
<div class="post-share-icons cf">
<span class="counters">
</span>
<a href="https://www.facebook.com/sharer.php?u=https%3A%2F%2Fotus.ru%2Fjournal%2Fstandarty-junikoda-i-drugie-rasprostranennye-kodirovki%2F" class="link facebook wpel-icon-right" target="_blank" title="Share on Facebook" data-wpel-link="external" rel="nofollow external noopener noreferrer"><i class="fa fa-facebook"></i><span class="wpel-icon wpel-image wpel-icon-6"></span></a>
<a href="https://twitter.com/intent/tweet?url=https%3A%2F%2Fotus.ru%2Fjournal%2Fstandarty-junikoda-i-drugie-rasprostranennye-kodirovki%2F&text=%D0%A1%D1%82%D0%B0%D0%BD%D0%B4%D0%B0%D1%80%D1%82%D1%8B%20%D0%AE%D0%BD%D0%B8%D0%BA%D0%BE%D0%B4%D0%B0%20%D0%B8%20%D0%B4%D1%80%D1%83%D0%B3%D0%B8%D0%B5%20%D1%80%D0%B0%D1%81%D0%BF%D1%80%D0%BE%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5%20%D0%BA%D0%BE%D0%B4%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B8" class="link twitter wpel-icon-right" target="_blank" title="Share on Twitter" data-wpel-link="external" rel="nofollow external noopener noreferrer"><i class="fa fa-twitter"></i><span class="wpel-icon wpel-image wpel-icon-6"></span></a>
<a href="https://www.linkedin.com/shareArticle?mini=true&url=https%3A%2F%2Fotus.ru%2Fjournal%2Fstandarty-junikoda-i-drugie-rasprostranennye-kodirovki%2F" class="link linkedin wpel-icon-right" target="_blank" title="LinkedIn" data-wpel-link="external" rel="nofollow external noopener noreferrer"><i class="fa fa-linkedin"></i><span class="wpel-icon wpel-image wpel-icon-6"></span></a>
<a href="https://pinterest.com/pin/create/button/?url=https%3A%2F%2Fotus.ru%2Fjournal%2Fstandarty-junikoda-i-drugie-rasprostranennye-kodirovki%2F&media=https%3A%2F%2Fotus.ru%2Fjournal%2Fwp-content%2Fuploads%2F2024%2F04%2Foj-1080x720-60.jpg&description=%D0%A1%D1%82%D0%B0%D0%BD%D0%B4%D0%B0%D1%80%D1%82%D1%8B%20%D0%AE%D0%BD%D0%B8%D0%BA%D0%BE%D0%B4%D0%B0%20%D0%B8%20%D0%B4%D1%80%D1%83%D0%B3%D0%B8%D0%B5%20%D1%80%D0%B0%D1%81%D0%BF%D1%80%D0%BE%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B5%D0%BD%D0%BD%D1%8B%D0%B5%20%D0%BA%D0%BE%D0%B4%D0%B8%D1%80%D0%BE%D0%B2%D0%BA%D0%B8" class="link pinterest wpel-icon-right" target="_blank" title="Pinterest" data-wpel-link="external" rel="nofollow external noopener noreferrer"><i class="fa fa-pinterest-p"></i><span class="wpel-icon wpel-image wpel-icon-6"></span></a>
</div>
</div>
</div>
</div>
<div class="post-nav">
<div class="post previous cf">
<a href="https://otus.ru/journal/6-voprosov-kotorymi-stoit-zadavatsya-k-seredine-karery/" title="Prev Post" class="nav-icon" data-wpel-link="internal">
<i class="fa fa-angle-left"></i>
</a>
<span class="content">
<a href="https://otus.ru/journal/6-voprosov-kotorymi-stoit-zadavatsya-k-seredine-karery/" class="image-link" rel="previous" data-wpel-link="internal">
<img width="150" height="106" src="data:image/svg+xml,%3Csvg%20viewBox%3D%270%200%20150%20106%27%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%3E%3C%2Fsvg%3E" class="attachment-thumbnail size-thumbnail lazyload wp-post-image" alt="6 вопросов, которыми стоит задаваться к середине карьеры" decoding="async" data-srcset="https://otus.ru/journal/wp-content/uploads/2024/04/oj-1080x720-kopiya-4-150x106.png 150w, https://otus.ru/journal/wp-content/uploads/2024/04/oj-1080x720-kopiya-4-300x212.png 300w, https://otus.ru/journal/wp-content/uploads/2024/04/oj-1080x720-kopiya-4-1024x724.png 1024w, https://otus.ru/journal/wp-content/uploads/2024/04/oj-1080x720-kopiya-4-768x543.png 768w, https://otus.ru/journal/wp-content/uploads/2024/04/oj-1080x720-kopiya-4-1536x1086.png 1536w" data-src="https://otus.ru/journal/wp-content/uploads/2024/04/oj-1080x720-kopiya-4-150x106.png" data-sizes="(max-width: 150px) 100vw, 150px" title="6 вопросов, которыми стоит задаваться к середине карьеры" /> </a>
<div class="post-meta">
<span class="label">Prev Post</span>
<div class="post-meta post-meta-b">
<h2 class="post-title">
<a href="https://otus.ru/journal/6-voprosov-kotorymi-stoit-zadavatsya-k-seredine-karery/" data-wpel-link="internal">6 вопросов, которыми стоит задаваться к середине карьеры</a>
</h2>
<div class="below">
<a href="https://otus.ru/journal/6-voprosov-kotorymi-stoit-zadavatsya-k-seredine-karery/" class="meta-item date-link" data-wpel-link="internal"><time class="post-date" datetime="2024-04-05T14:17:24+00:00">5 апреля, 2024</time></a>
<span class="meta-sep"></span>
<span class="meta-item read-time">7 Mins Read</span>
</div>
</div> </div>
</span>
</div>
<div class="post next cf">
<a href="https://otus.ru/journal/metod-vernam/" title="Next Post" class="nav-icon" data-wpel-link="internal">
<i class="fa fa-angle-right"></i>
</a>
<span class="content">
<a href="https://otus.ru/journal/metod-vernam/" class="image-link" rel="next" data-wpel-link="internal">
<img width="150" height="106" src="data:image/svg+xml,%3Csvg%20viewBox%3D%270%200%20150%20106%27%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%3E%3C%2Fsvg%3E" class="attachment-thumbnail size-thumbnail lazyload wp-post-image" alt="Метод Vernam" decoding="async" data-srcset="https://otus.ru/journal/wp-content/uploads/2024/04/oj-1080x720-61-150x106.jpg 150w, https://otus.ru/journal/wp-content/uploads/2024/04/oj-1080x720-61-300x212.jpg 300w, https://otus.ru/journal/wp-content/uploads/2024/04/oj-1080x720-61-1024x724.jpg 1024w, https://otus.ru/journal/wp-content/uploads/2024/04/oj-1080x720-61-768x543.jpg 768w, https://otus.ru/journal/wp-content/uploads/2024/04/oj-1080x720-61-1536x1086.jpg 1536w" data-src="https://otus.ru/journal/wp-content/uploads/2024/04/oj-1080x720-61-150x106.jpg" data-sizes="(max-width: 150px) 100vw, 150px" title="Метод Vernam" /> </a>
<div class="post-meta">
<span class="label">Next Post</span>
<div class="post-meta post-meta-b">
<h2 class="post-title">
<a href="https://otus.ru/journal/metod-vernam/" data-wpel-link="internal">Метод Vernam</a>
</h2>
<div class="below">
<a href="https://otus.ru/journal/metod-vernam/" class="meta-item date-link" data-wpel-link="internal"><time class="post-date" datetime="2024-04-07T20:29:00+00:00">7 апреля, 2024</time></a>
<span class="meta-sep"></span>
<span class="meta-item read-time">4 Mins Read</span>
</div>
</div> </div>
</span>
</div>
</div>
<section class="related-posts grid-3">
<h4 class="section-head"><span class="title">Читать ещё</span></h4>
<div class="ts-row posts cf">
<article class="post col-4">
<a href="https://otus.ru/journal/uroven-gotovnosti-cto-k-2026/" title="Уровень готовности CTO к 2026" class="image-link" data-wpel-link="internal">
<img width="270" height="180" src="data:image/svg+xml,%3Csvg%20viewBox%3D%270%200%20270%20180%27%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%3E%3C%2Fsvg%3E" class="image lazyload wp-post-image" alt="Уровень готовности CTO к 2026" title="Уровень готовности CTO к 2026" decoding="async" loading="lazy" data-srcset="https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-3-270x180.jpg 270w, https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-3-770x515.jpg 770w, https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-3-370x245.jpg 370w" data-src="https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-3-270x180.jpg" data-sizes="(max-width: 270px) 100vw, 270px" /> </a>
<div class="content">
<h3 class="post-title"><a href="https://otus.ru/journal/uroven-gotovnosti-cto-k-2026/" class="post-link" data-wpel-link="internal">Уровень готовности CTO к 2026</a></h3>
<div class="post-meta">
<time class="post-date" datetime="2025-11-16T19:50:59+00:00">16 ноября, 2025</time>
</div>
</div>
</article >
<article class="post col-4">
<a href="https://otus.ru/journal/novye-uroki-noyabrya-tolko-top-temy-po-programmirovaniju/" title="Новые уроки ноября: только топ-темы по программированию" class="image-link" data-wpel-link="internal">
<img width="270" height="180" src="data:image/svg+xml,%3Csvg%20viewBox%3D%270%200%20270%20180%27%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%3E%3C%2Fsvg%3E" class="image lazyload wp-post-image" alt="Новые уроки ноября: только топ-темы по программированию" title="Новые уроки ноября: только топ-темы по программированию" decoding="async" loading="lazy" data-srcset="https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-2-270x180.jpg 270w, https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-2-770x515.jpg 770w, https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-2-370x245.jpg 370w" data-src="https://otus.ru/journal/wp-content/uploads/2025/11/oj-1080x720-kopiya-2-270x180.jpg" data-sizes="(max-width: 270px) 100vw, 270px" /> </a>
<div class="content">
<h3 class="post-title"><a href="https://otus.ru/journal/novye-uroki-noyabrya-tolko-top-temy-po-programmirovaniju/" class="post-link" data-wpel-link="internal">Новые уроки ноября: только топ-темы по программированию</a></h3>
<div class="post-meta">
<time class="post-date" datetime="2025-11-09T23:24:11+00:00">9 ноября, 2025</time>
</div>
</div>
</article >
<article class="post col-4">
<a href="https://otus.ru/journal/schjot-idjot-na-chasy/" title="Счёт идёт на часы" class="image-link" data-wpel-link="internal">
<img width="270" height="180" src="data:image/svg+xml,%3Csvg%20viewBox%3D%270%200%20270%20180%27%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%3E%3C%2Fsvg%3E" class="image lazyload wp-post-image" alt="Счёт идёт на часы" title="Счёт идёт на часы" decoding="async" loading="lazy" data-srcset="https://otus.ru/journal/wp-content/uploads/2025/10/oj-1080x720-kopiya-7-270x180.png 270w, https://otus.ru/journal/wp-content/uploads/2025/10/oj-1080x720-kopiya-7-770x515.png 770w, https://otus.ru/journal/wp-content/uploads/2025/10/oj-1080x720-kopiya-7-370x245.png 370w" data-src="https://otus.ru/journal/wp-content/uploads/2025/10/oj-1080x720-kopiya-7-270x180.png" data-sizes="(max-width: 270px) 100vw, 270px" /> </a>
<div class="content">
<h3 class="post-title"><a href="https://otus.ru/journal/schjot-idjot-na-chasy/" class="post-link" data-wpel-link="internal">Счёт идёт на часы</a></h3>
<div class="post-meta">
<time class="post-date" datetime="2025-10-30T15:04:59+00:00">30 октября, 2025</time>
</div>
</div>
</article >
</div>
</section>
</article> <!-- .the-post -->
</div>
<aside class="col-4 sidebar">
<div class="inner">
<ul>
<li id="search-2" class="widget widget_search"><h5 class="widget-title"><span>Поиск по блогу</span></h5>
<form method="get" class="search-form" action="https://otus.ru/journal/">
<label>
<span class="screen-reader-text">Search for:</span>
<input type="search" class="search-field" placeholder="Введите запрос и нажмите Enter" value="" name="s" title="Search for:" />
</label>
<button type="submit" class="search-submit"><i class="fa fa-search"></i></button>
</form>
</li>
<li id="tag_cloud-5" class="widget widget_tag_cloud"><h5 class="widget-title"><span>Метки</span></h5><div class="tagcloud"><a href="https://otus.ru/journal/tag/android-2/" class="tag-cloud-link tag-link-74 tag-link-position-1" style="font-size: 12.472222222222pt;" aria-label="Android (34 элемента)" data-wpel-link="internal">Android</a>
<a href="https://otus.ru/journal/tag/c-3/" class="tag-cloud-link tag-link-91 tag-link-position-2" style="font-size: 10.916666666667pt;" aria-label="C (23 элемента)" data-wpel-link="internal">C</a>
<a href="https://otus.ru/journal/tag/c-2/" class="tag-cloud-link tag-link-81 tag-link-position-3" style="font-size: 12.666666666667pt;" aria-label="C# (35 элементов)" data-wpel-link="internal">C#</a>
<a href="https://otus.ru/journal/tag/c/" class="tag-cloud-link tag-link-20 tag-link-position-4" style="font-size: 12.472222222222pt;" aria-label="c++ (34 элемента)" data-wpel-link="internal">c++</a>
<a href="https://otus.ru/journal/tag/computer-science/" class="tag-cloud-link tag-link-209 tag-link-position-5" style="font-size: 15.972222222222pt;" aria-label="computer science (78 элементов)" data-wpel-link="internal">computer science</a>
<a href="https://otus.ru/journal/tag/css/" class="tag-cloud-link tag-link-288 tag-link-position-6" style="font-size: 8.6805555555556pt;" aria-label="CSS (13 элементов)" data-wpel-link="internal">CSS</a>
<a href="https://otus.ru/journal/tag/data-science/" class="tag-cloud-link tag-link-151 tag-link-position-7" style="font-size: 8pt;" aria-label="Data Science (11 элементов)" data-wpel-link="internal">Data Science</a>
<a href="https://otus.ru/journal/tag/devops/" class="tag-cloud-link tag-link-98 tag-link-position-8" style="font-size: 10.138888888889pt;" aria-label="devops (19 элементов)" data-wpel-link="internal">devops</a>
<a href="https://otus.ru/journal/tag/docker/" class="tag-cloud-link tag-link-143 tag-link-position-9" style="font-size: 8.2916666666667pt;" aria-label="Docker (12 элементов)" data-wpel-link="internal">Docker</a>
<a href="https://otus.ru/journal/tag/gamedev/" class="tag-cloud-link tag-link-25 tag-link-position-10" style="font-size: 11.694444444444pt;" aria-label="gamedev (28 элементов)" data-wpel-link="internal">gamedev</a>
<a href="https://otus.ru/journal/tag/hr/" class="tag-cloud-link tag-link-103 tag-link-position-11" style="font-size: 8pt;" aria-label="hr (11 элементов)" data-wpel-link="internal">hr</a>
<a href="https://otus.ru/journal/tag/html/" class="tag-cloud-link tag-link-217 tag-link-position-12" style="font-size: 11.208333333333pt;" aria-label="HTML (25 элементов)" data-wpel-link="internal">HTML</a>
<a href="https://otus.ru/journal/tag/ios/" class="tag-cloud-link tag-link-101 tag-link-position-13" style="font-size: 8.9722222222222pt;" aria-label="iOS (14 элементов)" data-wpel-link="internal">iOS</a>
<a href="https://otus.ru/journal/tag/it/" class="tag-cloud-link tag-link-50 tag-link-position-14" style="font-size: 10.527777777778pt;" aria-label="IT (21 элемент)" data-wpel-link="internal">IT</a>
<a href="https://otus.ru/journal/tag/java/" class="tag-cloud-link tag-link-75 tag-link-position-15" style="font-size: 15.680555555556pt;" aria-label="Java (73 элемента)" data-wpel-link="internal">Java</a>
<a href="https://otus.ru/journal/tag/javascript/" class="tag-cloud-link tag-link-83 tag-link-position-16" style="font-size: 14.319444444444pt;" aria-label="JavaScript (53 элемента)" data-wpel-link="internal">JavaScript</a>
<a href="https://otus.ru/journal/tag/linux/" class="tag-cloud-link tag-link-141 tag-link-position-17" style="font-size: 11.888888888889pt;" aria-label="Linux (29 элементов)" data-wpel-link="internal">Linux</a>
<a href="https://otus.ru/journal/tag/machine-learning/" class="tag-cloud-link tag-link-167 tag-link-position-18" style="font-size: 8.6805555555556pt;" aria-label="Machine Learning (13 элементов)" data-wpel-link="internal">Machine Learning</a>
<a href="https://otus.ru/journal/tag/otus-book/" class="tag-cloud-link tag-link-261 tag-link-position-19" style="font-size: 9.9444444444444pt;" aria-label="otus book (18 элементов)" data-wpel-link="internal">otus book</a>
<a href="https://otus.ru/journal/tag/php/" class="tag-cloud-link tag-link-45 tag-link-position-20" style="font-size: 10.527777777778pt;" aria-label="PHP (21 элемент)" data-wpel-link="internal">PHP</a>
<a href="https://otus.ru/journal/tag/python/" class="tag-cloud-link tag-link-27 tag-link-position-21" style="font-size: 16.944444444444pt;" aria-label="Python (99 элементов)" data-wpel-link="internal">Python</a>
<a href="https://otus.ru/journal/tag/qa/" class="tag-cloud-link tag-link-155 tag-link-position-22" style="font-size: 11.402777777778pt;" aria-label="qa (26 элементов)" data-wpel-link="internal">qa</a>
<a href="https://otus.ru/journal/tag/sql/" class="tag-cloud-link tag-link-38 tag-link-position-23" style="font-size: 12.861111111111pt;" aria-label="SQL (37 элементов)" data-wpel-link="internal">SQL</a>
<a href="https://otus.ru/journal/tag/team-lead/" class="tag-cloud-link tag-link-364 tag-link-position-24" style="font-size: 9.9444444444444pt;" aria-label="team lead (18 элементов)" data-wpel-link="internal">team lead</a>
<a href="https://otus.ru/journal/tag/unity/" class="tag-cloud-link tag-link-24 tag-link-position-25" style="font-size: 8pt;" aria-label="unity (11 элементов)" data-wpel-link="internal">unity</a>
<a href="https://otus.ru/journal/tag/algoritmy/" class="tag-cloud-link tag-link-30 tag-link-position-26" style="font-size: 9.9444444444444pt;" aria-label="Алгоритмы (18 элементов)" data-wpel-link="internal">Алгоритмы</a>
<a href="https://otus.ru/journal/tag/bazy-dannyh/" class="tag-cloud-link tag-link-40 tag-link-position-27" style="font-size: 10.138888888889pt;" aria-label="Базы данных (19 элементов)" data-wpel-link="internal">Базы данных</a>
<a href="https://otus.ru/journal/tag/matematika/" class="tag-cloud-link tag-link-44 tag-link-position-28" style="font-size: 10.916666666667pt;" aria-label="Математика (23 элемента)" data-wpel-link="internal">Математика</a>
<a href="https://otus.ru/journal/tag/arhitektura-po/" class="tag-cloud-link tag-link-10 tag-link-position-29" style="font-size: 9.4583333333333pt;" aria-label="архитектура ПО (16 элементов)" data-wpel-link="internal">архитектура ПО</a>
<a href="https://otus.ru/journal/tag/bazy-dannyh-2/" class="tag-cloud-link tag-link-251 tag-link-position-30" style="font-size: 10.138888888889pt;" aria-label="базы данных (19 элементов)" data-wpel-link="internal">базы данных</a>
<a href="https://otus.ru/journal/tag/vebinar/" class="tag-cloud-link tag-link-201 tag-link-position-31" style="font-size: 13.930555555556pt;" aria-label="вебинар (48 элементов)" data-wpel-link="internal">вебинар</a>
<a href="https://otus.ru/journal/tag/dajdzhest/" class="tag-cloud-link tag-link-308 tag-link-position-32" style="font-size: 10.722222222222pt;" aria-label="дайджест (22 элемента)" data-wpel-link="internal">дайджест</a>
<a href="https://otus.ru/journal/tag/zapis-vebinara/" class="tag-cloud-link tag-link-226 tag-link-position-33" style="font-size: 14.902777777778pt;" aria-label="запись вебинара (61 элемент)" data-wpel-link="internal">запись вебинара</a>
<a href="https://otus.ru/journal/tag/zapis-uroka/" class="tag-cloud-link tag-link-272 tag-link-position-34" style="font-size: 16.069444444444pt;" aria-label="запись урока (80 элементов)" data-wpel-link="internal">запись урока</a>
<a href="https://otus.ru/journal/tag/informacionnaya-bezopasnost/" class="tag-cloud-link tag-link-232 tag-link-position-35" style="font-size: 10.138888888889pt;" aria-label="информационная безопасность (19 элементов)" data-wpel-link="internal">информационная безопасность</a>
<a href="https://otus.ru/journal/tag/karera-v-it/" class="tag-cloud-link tag-link-292 tag-link-position-36" style="font-size: 9.9444444444444pt;" aria-label="карьера в IT (18 элементов)" data-wpel-link="internal">карьера в IT</a>
<a href="https://otus.ru/journal/tag/podborka/" class="tag-cloud-link tag-link-7 tag-link-position-37" style="font-size: 12.666666666667pt;" aria-label="подборка (35 элементов)" data-wpel-link="internal">подборка</a>
<a href="https://otus.ru/journal/tag/podborka-statej/" class="tag-cloud-link tag-link-219 tag-link-position-38" style="font-size: 15.777777777778pt;" aria-label="подборка статей (75 элементов)" data-wpel-link="internal">подборка статей</a>
<a href="https://otus.ru/journal/tag/programmirovanie/" class="tag-cloud-link tag-link-65 tag-link-position-39" style="font-size: 22pt;" aria-label="программирование (332 элемента)" data-wpel-link="internal">программирование</a>
<a href="https://otus.ru/journal/tag/proekt/" class="tag-cloud-link tag-link-321 tag-link-position-40" style="font-size: 11.888888888889pt;" aria-label="проект (29 элементов)" data-wpel-link="internal">проект</a>
<a href="https://otus.ru/journal/tag/proektnaya-rabota/" class="tag-cloud-link tag-link-310 tag-link-position-41" style="font-size: 11.597222222222pt;" aria-label="проектная работа (27 элементов)" data-wpel-link="internal">проектная работа</a>
<a href="https://otus.ru/journal/tag/seti/" class="tag-cloud-link tag-link-181 tag-link-position-42" style="font-size: 12.958333333333pt;" aria-label="сети (38 элементов)" data-wpel-link="internal">сети</a>
<a href="https://otus.ru/journal/tag/testirovanie/" class="tag-cloud-link tag-link-69 tag-link-position-43" style="font-size: 13.930555555556pt;" aria-label="тестирование (48 элементов)" data-wpel-link="internal">тестирование</a>
<a href="https://otus.ru/journal/tag/upravlenie-komandoj/" class="tag-cloud-link tag-link-63 tag-link-position-44" style="font-size: 11.694444444444pt;" aria-label="управление командой (28 элементов)" data-wpel-link="internal">управление командой</a>
<a href="https://otus.ru/journal/tag/habr-2/" class="tag-cloud-link tag-link-203 tag-link-position-45" style="font-size: 13.930555555556pt;" aria-label="хабр (48 элементов)" data-wpel-link="internal">хабр</a></div>
</li>
</ul>
</div>
</aside>
</div> <!-- .ts-row -->
</div> <!-- .main -->
<footer class="main-footer dark bold">
<section class="lower-footer cf">
<div class="wrap">
<div class="links">
<div class="menu-menju-navykov-container"><ul id="menu-menju-navykov-1" class="menu"><li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10413"><a href="https://otus.ru/categories/programming/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Программирование<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10414"><a href="https://otus.ru/categories/architecture/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Архитектура<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10415"><a href="https://otus.ru/categories/operations/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Инфраструктура<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10416"><a href="https://otus.ru/categories/information-security-courses/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Безопасность<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10417"><a href="https://otus.ru/categories/data-science/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Data Science<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10418"><a href="https://otus.ru/categories/gamedev/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">GameDev<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10419"><a href="https://otus.ru/categories/marketing-business/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Управление<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10420"><a href="https://otus.ru/categories/analytics/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Аналитика и анализ<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
<li class="menu-item menu-item-type-custom menu-item-object-custom menu-item-10421"><a href="https://otus.ru/categories/testing/" data-wpel-link="external" target="_blank" rel="nofollow external noopener noreferrer" class="wpel-icon-right">Тестирование<span class="wpel-icon wpel-image wpel-icon-6"></span></a></li>
</ul></div> </div>
<p class="copyright"> © 2015-2026 OTUS </p>
<div class="to-top">
<a href="#" class="back-to-top"><i class="fa fa-angle-up"></i> Top</a>
</div>
</div>
</section>
</footer>
</div> <!-- .main-wrap -->
<div class="mobile-menu-container off-canvas" id="mobile-menu">
<a href="#" class="close"><i class="fa fa-times"></i></a>
<div class="logo">
</div>
<ul class="mobile-menu"></ul>
</div>
<div class="search-modal-wrap">
<div class="search-modal-box" role="dialog" aria-modal="true">
<form method="get" class="search-form" action="https://otus.ru/journal/">
<input type="search" class="search-field" name="s" placeholder="Search..." value="" required />
<button type="submit" class="search-submit visuallyhidden">Submit</button>
<p class="message">
Type above and press <em>Enter</em> to search. Press <em>Esc</em> to cancel. </p>
</form>
</div>
</div>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/plugins/clearfy/components/comments-plus/assets/js/url-span.js" id="wbcr-comments-plus-url-span-js"></script>
<script type="text/javascript" id="ez-toc-scroll-scriptjs-js-extra">
/* <![CDATA[ */
var eztoc_smooth_local = {"scroll_offset":"30"};
/* ]]> */
</script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/plugins/easy-table-of-contents/assets/js/smooth_scroll.min.js" id="ez-toc-scroll-scriptjs-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/plugins/easy-table-of-contents/vendor/js-cookie/js.cookie.min.js" id="ez-toc-js-cookie-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/plugins/easy-table-of-contents/vendor/sticky-kit/jquery.sticky-kit.min.js" id="ez-toc-jquery-sticky-kit-js"></script>
<script type="text/javascript" id="ez-toc-js-js-extra">
/* <![CDATA[ */
var ezTOC = {"smooth_scroll":"1","visibility_hide_by_default":"","scroll_offset":"30","fallbackIcon":"<span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span>"};
/* ]]> */
</script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/plugins/easy-table-of-contents/assets/js/front.min.js" id="ez-toc-js-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/custom-script.js" id="custom-script-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/magnific-popup.js" id="magnific-popup-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/jquery.fitvids.js" id="jquery-fitvids-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-includes/js/imagesloaded.min.js" id="imagesloaded-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/object-fit-images.js" id="object-fit-images-js"></script>
<script type="text/javascript" id="contentberg-theme-js-extra">
/* <![CDATA[ */
var Bunyad = {"custom_ajax_url":"\/journal\/standarty-junikoda-i-drugie-rasprostranennye-kodirovki\/"};
/* ]]> */
</script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/theme.js" id="contentberg-theme-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/theia-sticky-sidebar.js" id="theia-sticky-sidebar-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/jquery.slick.js" id="jquery-slick-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-content/themes/contentberg/js/jarallax.js" id="jarallax-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-includes/js/masonry.min.js" id="masonry-js"></script>
<script type="text/javascript" src="https://otus.ru/journal/wp-includes/js/jquery/jquery.masonry.min.js" id="jquery-masonry-js"></script>
</body>
</html>
<!-- Cache served by breeze CACHE - Last modified: Tue, 10 Mar 2026 15:04:50 GMT -->