Вы когда-нибудь получали сообщение с нечитаемыми иероглифами вместо текста? Эта проблема преследовала…
Вы когда-нибудь получали сообщение с нечитаемыми иероглифами вместо текста? Эта проблема преследовала цифровой мир десятилетиями, пока разные кодировки боролись за место на экране. Ситуация кардинально изменилась с появлением Юникода.
Единый стандарт присвоил уникальный номер каждому символу любого языка, от древней клинописи до современных эмодзи. Юникод, по сути — это гигантский цифровой словарь, который описывает все письменности мира. Рассказываем о его появлении и принципах работы в нашей статье.
Мешанина из кодировок
В эпоху зарождения персональных компьютеров царил цифровой хаос. Отправляя текстовый файл с одной машины на другую, вы никогда не могли быть уверены, что получатель увидит тот же текст. Буква «А» на американском компьютере имела код 65. На советском же могла обозначаться совсем другим числом. Например, 192 в одной из локальных схем.
Это происходило потому, что каждой стране и даже производителю приходилось изобретать собственные способы кодирования символов. Такая система создавала полную неразбериху.
О том, как люди стали оставлять знаки на различных поверхностях, узнайте из статьи «Как пишут люди: история письменности»
Основой этого вавилонского столпотворения стал американский стандарт ASCII. Он был гениален в своей простоте. Но охватывал лишь 128 символов: латинский алфавит, цифры и базовые знаки препинания. Этого хватало для нужд США, но было катастрофически мало для всего остального мира.
Попытки расширить его до 256 символов породили новые проблемы. Производители начали использовать освободившееся пространство на свое усмотрение. Это делало кодировки еще более несовместимыми.
Для отображения кириллицы, например, было создано несколько конкурирующих и абсолютно несовместимых стандартов. Легендарный KOI-8, разработанный для советских мейнфреймов, активно использовался в UNIX-системах. С приходом Windows доминировать начала кодировка Windows-1251. А для работы в старых DOS-программах требовалась уже CP866. Текст, написанный в одной из них, в другой превращался в загадочную последовательность иероглифов и вопросительных знаков.
Пытаясь навести хоть какой-то порядок, Международная организация по стандартизации (ISO) разработала целое семейство кодировок ISO-8859. Существовали отдельные стандарты для западноевропейских, арабских, греческого, иврита и других языков. Это было шагом вперед, но проблема принципиально не решалась. В одном документе по-прежнему было невозможно сочетать, скажем, русский и французский алфавиты. Не говоря уже о японских иероглифах.
Цифровой мир остро нуждался в кардинально новом решении. Требовался стандарт, который смог бы описать все системы письменности разом, положив конец этой неразберихе.
Что такое Юникод?
Юникод как стандарт кодирования символов появился в 1991 году. Его разработала некоммерческая организация «Консорциум Юникода» (Unicode Consortium). Ключевой прорыв Юникода — в том, что это не очередная кодировка. Это гигантская универсальная таблица.
Её главная задача — присвоить каждому символу, когда-либо созданному человечеством, уникальный и неизменный идентификатор, который официально называется «кодовая точка». Это фундаментально меняет подход. Вместо того чтобы договариваться о том, как записывать символы в байты, мы сначала договариваемся о том, что это за символы.
Проще всего это представить в виде таблицы Менделеева для цифрового мира. Каждому элементу — букве, иероглифу, эмодзи или даже древнему символу — присвоен свой «атомный номер». Например, латинской букве «A» навечно отведена кодовая точка U+0041. Сам по себе этот номер ничего не говорит о том, как его хранить в памяти компьютера. Он лишь однозначно идентифицирует сам символ.
Другая аналогия — это гигантская телефонная книга всей планеты. В ней у каждого абонента — а в нашем случае это любой символ из любой письменности — есть свой уникальный номер. Неважно, откуда «абонент»: с Кипра, из Китая или из Древнего Египта. В этой книге для него уже зарезервирована отдельная строка с номером. Это и есть кодовая точка Юникода.
Как работает Юникод?
Каждый символ в Юникоде получает свой уникальный адрес, который записывается в специальном формате. Он выглядит как U+, за которым следует от четырех до шести цифр в шестнадцатеричной системе счисления.
Например, латинская буква «A» имеет адрес U+0041, а смайлик улыбки — U+1F600. Эта запись — не более чем номер в гигантской виртуальной таблице, который говорит: «этот символ существует и вот его официальный идентификатор». Сам по себе номер не хранится в памяти компьютера — для этого нужны кодировки.
Настоящим героем современного интернета стала кодировка UTF-8. Её гениальность в принципе переменной длины. Она сама решает, сколько байтов потратить на тот или иной символ. Знакомые всем символы из старой кодировки ASCII, например, латиница и цифры, занимают всего один байт, как и раньше. А для более редких символов, вроде кириллицы или иероглифов, UTF-8 задействует два или три байта. Для экзотики вроде древних письменностей или сложных эмодзи она может использовать и все четыре.
Это делает UTF-8 невероятно экономичной и гибкой. Она полностью обратно совместима со старыми системами, работавшими с ASCII, что позволило безболезненно перейти на единый стандарт. Именно благодаря этому сегодня подавляющее большинство веб-страниц, операционные системы Linux и macOS, а также практически все базы данных используют именно UTF-8 по умолчанию, экономя трафик и ресурсы.
Богатство символов
Современный стандарт Юникода — это поистине вселенская библиотека символов. Его пространство колоссально: зарезервировано более миллиона уникальных «адресов» (кодовых позиций) для будущего расширения. Хотя на сегодняшний день в версии 15.1 определено около 150 тысяч реально существующих символов.
Это оставляет огромный запас для включения новых письменностей, знаков и даже пока не изобретённых символов, гарантируя, что стандарт не исчерпает себя в обозримом будущем.
Сердце этой библиотеки — это, конечно, живые и исторические системы письма. Здесь соседствуют привычные латиница, кириллица и греческий алфавит с арабской вязью, письменностью деванагари для хинди и санскрита, а также десятками других.
Особое место занимают унифицированные иероглифы — единый набор символов для китайского, японского и корейского языков. Это позволяет одному и тому же графическому знаку представлять одно и то же понятие в разных культурах, экономя драгоценное кодовое пространство.
Отдельные разделы каталога отведены под специальные символы, без которых немыслима современная наука и техника. Это математические операторы, фонетические алфавиты, геометрические фигуры и тысячи технических пиктограмм для цифровых интерфейсов. Но самый известный широкой публике блок — это, безусловно, эмодзи.
Знаки вводятся через клавиатуру. Историю этого незаменимого устройства мы рассказываем в статье «Клавиатура: кнопки, которые изменили мир»
Важно понимать, что каждый эмодзи — это не картинка, а такой же полноценный текстовый символ, как буква «А». Юникод определяет лишь его значение и рекомендации по отображению (например, U+1F600 — grinning face). А конкретный дизайн — это уже задача шрифтов и операционных систем.
Как появляются новые знаки?
Процесс добавления нового символа в Юникод напоминает стандартизацию научного открытия. Любая организация или частное лицо может подать детальную заявку в «Консорциум Юникод». Там необходимо обосновать необходимость символа, доказать его реальное использование и предоставить примеры.
Например, эмодзи «тако» 🌮 предложили в 2015 году как часть расширения пищевой культуры в цифровом общении. А символ казахской тенге ₸ добавили для поддержки национальной валюты после официального запроса от Казахстана. Каждое предложение тщательно обсуждается, голосуется. И лишь затем оно попадает в очередную версию стандарта.
Проблемы и риски
Обратной стороной такого богатства символов стала проблема визуальной омонимии. Некоторые знаки из разных блоков выглядят практически неотличимо для человеческого глаза. Классический пример — кириллическая «а» (U+0430) и латинская «a» (U+0061), которые на экране большинства шрифтов выглядят идентично. Этим активно пользуются злоумышленники, создавая фишинговые сайты с адресами, где одна или несколько букв заменены на их визуальные двойники из другого алфавита, обманывая пользователей.
Несмотря на повсеместное распространение Юникода, в цифровом мире до сих пор можно столкнуться с последствиями старой эпохи. Пресловутые «кракозябры» — бессмысленные последовательности знаков вроде «Ð�аÑ�ледие» — это не что иное, как артефакт неправильного преобразования текста.
Они возникают, когда программа ошибочно интерпретирует последовательность байтов, написанную в одной старой кодировке (например, Windows-1251), как текст в другой (скажем, UTF-8). Компьютер честно пытается прочитать байты по правилам современного стандарта, но получает лишь бессмыслицу.
Это наследие старых систем особенно заметно при работе с архивами данных или при получении писем из очень старых почтовых клиентов. Современное программное обеспечение стало умнее и часто автоматически угадывает кодировку. Но идеального решения не существует. Проблема «кракозябр» — это напоминание о том, какой хаос царил в цифровом мире до прихода универсального стандарта, и почему его внедрение стало настоящей революцией.
Юникод сохраняет языки и символы для будущего, делая их вечными и доступными каждому. Ваша семейная история заслуживает такого же бережного отношения! Не позвольте уникальным историям, письмам и голосам ваших предков кануть в Лету — сохраните их в Цифровой капсуле времени! Познакомьтесь с ней на онлайн-презентации «Первый шаг» — переходите по ссылке и записывайтесь!
Рубрики: Хранение информации
Комментариев: 0 обсудить?