Другое

Unicode (Юникод): что это, как кодировать и расшифровать символы

Lorem ipsum dolor

Юникод — это  единая таблица кодировки символов, которая используется во всем мире для текстовых символов на разных языках. Юникод включает в себя несколько протоколов кодирования, при помощи которых текстовые символы преобразуются в символы, понятные для компьютера.

Современный компьютер может выполнять разные сложные задачи. Однако работает он очень примитивно и понимает только «двоичное» представление, которое состоит только из «единиц и нулей». Неважно что вы делаете за компьютером: пишете текст, смотрите фильм, программируете, редактируете фотографии и др. Для компьютера это все всего лишь поток из двоичных символов. Поэтому, все что попадает внутрь компьютера, преобразуется в двоичные числа, в том числе и текст.

Юникод — это стандарт, который отвечает за преобразование текстовых символов в двоичный код. Когда вы пишете какой-то текст, вам не нужно задумываться как та или иная буква будет обозначаться в байтовом, битовом или двоичном представлении. Об этом заботятся протоколы кодировки. Таких протоколов кодировки достаточно много, но самые популярные — это те, которые входят в состав Юникод.

Юникод — что это?

Таблица символов  Юникод определяет  кодировку символов для большинства современных языков: 

  • кириллические и латинские символы;

  • восточные языки с письменностью «справа-налево»;

  • азиатские языки.

При этом, Юникод еще регламентирует кодировку:

  • технических символов;

  • знаков препинания;

  • математических символов;

  • эмодзи;

  • изменяющихся символов, которые входят в состав других символов, например «~»(тильда);

  • и др.

Таблица символов Юникод постоянно обновляется. На сегодняшний день она регламентирует кодировку более 128 тысяч текстовых символов из разных человеческих языков. При этом Юникод  обладает «свободным» местом для новых символов в размере 850 тысяч ячеек. Несложно заметить, что потенциал для развития символов Юникод просто огромен.

Важно отметить, что кодирование по системе Юникод происходит дважды:

  • первый уровень кодирования определяет текстовому символу кодовую позицию в системе Юникод, например U-0000;

  • второй уровень кодирования происходит, когда набор символов из таблицы Юникод кодируется в двоичное представление.

Протоколы кодировки Юникод

Протокол кодирования Юникод  указывает на идентичность текстовых символов и позволяет определять им какое-то битовое значение.

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

  1. UTF-8. Это самый популярный протокол кодирования, который используется повсеместно. Он использует 8-битовое обозначение символов и полностью соответствует более старому протоколу кодировки — ASCII. Документы, кодированные этим протоколом, имеют наиболее легкий вес по сравнению с документами, кодированными другими протоколами. Данный вид кодировки обладает переменной длиной. То есть, если для символа не хватает длины одного байта (8 бит), тогда он может быт закодирован двумя байтами.

  2. UTF-16. Использует 16-битовое обозначение закодированных символов. Используется реже, чем первый протокол кодирования. Сочетает в себе баланс между компактностью и эффективностью. Этот вид кодировки также обладает переменной длиной. В стандартном виде кодировка происходит в 2 байта (16 бит), если этой длины не хватает, тогда символ может быть закодирован в 4 байта. Такой вид кодировки часто применяется в операционных системах.

  3. UTF-32. Использует 32-битное обозначение закодированных символов. Применяется еще реже за счет того, что требует больше системных ресурсов для работы с закодированными документами в этом протоколе.

 Важно отметить, что когда кодирование происходит в пределах системы Юникод, тогда пользователь не видит существенной разницы и проблем с текстом. Так как конвертация кодировки между разными протоколами происходит безболезненно. 

Юникод всех объединил

До того как все начали использовать Юникод, творилась неразбериха. Изначально была очень популярна ASCII-кодировка, которая активно использовалась в свое время. Ее проблема — это малый размер. Кодировка ASCII определяет 128 символов, куда был включен латинский алфавит, цифры и основные знаки препинания. Но между разработчиками появлялась несогласованность, потому что такого количества закодированных символов оказалось очень мало. Поэтому рождались и другие протоколы кодировки. Каждая отдельная IT-компания разрабатывала собственную систему кодировки. Для конечного пользователя — это был полнейший бардак. Потому что часто бывали такие случаи, что приходил какой-то текстовый документ, а прочитать его не представлялось возможным, потому что в программе для чтения отсутствовал именно такой протокол кодирования. Приходилось искать протокол, устанавливать его в программу и только потом текст становился доступным. В общем, от обилия протоколов кодировки страдал конечный пользователь.

С приходом Юникод все «устаканилось», потому что эта система способна вместить более 1 миллиона символов. Все что оставалось сделать — это всем разработчикам в мире договориться о применении единой системы кодирования. Что и было сделано, поэтому современные пользователи крайне редко испытывают проблемы с разными кодировками. Последней такой большой проблемой была разная кодировка в документах программ Word и LibreOffice, которая используется в дистрибутивах Linux.  Поэтому «вордовский» документ невозможно было прочитать в Линуксе и наоборот. Но проблема исправлена.

Заключение

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

Схожие статьи

Специалист по кибербезопасности: как пройти стажировку и найти работу?
Другое

Специалист по кибербезопасности: как пройти стажировку и найти работу?

Инициализация, присваивание и объявление переменной в Си, ошибки
Другое

Инициализация, присваивание и объявление переменной в Си, ошибки

Все возможности Facebook для разработчиков
Другое

Все возможности Facebook для разработчиков

Интересная функция: искусственный интеллект от Гугл угадывает рисунок
Другое

Интересная функция: искусственный интеллект от Гугл угадывает рисунок