Unicode: различия между версиями
AE (обсуждение | вклад) (Правки размеров и переносов) |
AE (обсуждение | вклад) (Правки размера) |
||
Строка 90: | Строка 90: | ||
Примеры некоторых Юникод символов для разных настольных игр <code>🁣🁩🁬</code> <code>♚♛♘</code> <code>🂠🂭🂸</code> <code>⚀⚂⚅</code> <code>🀁🀆🀇</code>. Текст увеличенного размера: | Примеры некоторых Юникод символов для разных настольных игр <code>🁣🁩🁬</code> <code>♚♛♘</code> <code>🂠🂭🂸</code> <code>⚀⚂⚅</code> <code>🀁🀆🀇</code>. Текст увеличенного размера: | ||
<span style="font-size:90px">🁣</span> <span style="font-size:90px">🁩</span> <span style="font-size:90px">🁬</span> <span style="font-size:90px">♚</span> <span style="font-size:90px">♛</span> <span style="font-size:90px">♘</span> <span style="font-size:90px">🂠</span> <span style="font-size:90px">🂭</span> <span style="font-size:90px">🂸</span> <span style="font-size:90px">⚀</span> <span style="font-size:90px">⚂</span> <span style="font-size:90px">⚅</span> <span style="font-size: | <span style="font-size:90px">🁣</span> <span style="font-size:90px">🁩</span> <span style="font-size:90px">🁬</span> <span style="font-size:90px">♚</span> <span style="font-size:90px">♛</span> <span style="font-size:90px">♘</span> <span style="font-size:90px">🂠</span> <span style="font-size:90px">🂭</span> <span style="font-size:90px">🂸</span> <span style="font-size:90px">⚀</span> <span style="font-size:90px">⚂</span> <span style="font-size:90px">⚅</span> <span style="font-size:90px">🀁</span> <span style="font-size:90px">🀆</span> <span style="font-size:90px">🀇</span> | ||
=== Недостатки === | === Недостатки === | ||
Перечислить | Перечислить |
Версия от 17:51, 8 апреля 2023
Unicode (Юникод) — единый международный стандарт преобразования букв различных алфавитов и символов в цифровое представление. Для этого каждому символу сопоставляется определенный порядковый номер.
Объясните простыми словами, пожалуйста
Давайте разберемся, что такое кодирование.
Начнем с времен, когда одному древнему человеку нужно было объяснить другому, за кем сегодня они пойдут охотиться. Древний человек издавал звуки животных, размахивал руками и костями вчерашнего ужина, указывал пальцем на рисунки животных на стене в пещере и всё было прекрасно! 💁🦣
Но неудобно. Когда нужно было "пообщаться" приходилось бегать к стене с картинками или устраивать представление. Тогда было решено закодировать образы и действия определенными звуками. Звуки объединялись в последовательности и так появились слова. Люди начали говорить и общались звуками тысячи лет, всё было прекрасно! 🧔💬
Но неудобно. Звук не получалось зафиксировать и положить на хранение. И люди опять вернулись к рисованию. Но рисовали теперь не животных на стенах, а звуки слов для их обозначения. Рисунки, кодирующие звуки, упрощались и постепенно превращались в то, что мы знаем как буквы. Их рисовали на тонких листочках, собирали в книги, хранили и передавали. Всё было прекрасно! 🧑🎓📚
Но неудобно. Когда нужно передать буквы из одного города в другой — их надо туда нести. А в провода буквы не влезают. Тогда пришлось кодировать уже буквы слов в виде последовательности коротких и длинных сигналов — так появилась азбука Морзе и всё было прекрасно! 🚢🆘
Но неудобно. Азбука Морзе передавала информацию медленно, сложно, неинтересно. С развитием компьютеров, она была заменена цифровым двоичным кодом. Где каждой букве была сопоставлена последовательность единиц и нулей. И всё было прекрасн0111
Но неудобно. Каждый начал кодировал буквы единицами и нулями по-своему. Причина в большом количестве разнообразных языков и алфавитов. Люди страдали и ругались пытаясь распознать какую из сотен кодировок надо использовать для того чтобы расшифровать эту 文字化け присланную файлом в электронном письме. Всё было ужасно! 🤬
И здесь появился Юникод. Единый стандарт кодирования букв из любых алфавитов в цифровое представление. Именно его мы используем прямо сейчас, общаясь в интернете с человеком из любой страны на любом языке да еще и с эмодзи-картинками. И всё — прекрасно! 😇
И удобно (пока).
PS ходят легенды, что школьники на уроках до сих пор рисуют палочками с краской на деревянных листочках странные головы быков: ⱯАААА! ✍️
А если серьезно
Международный стандарт
Юникод был создан в 1991 году и в данный момент является стандартом соответствия каждого символа некоторому порядковому номеру — кодовой точке. Стандарт ограничивает количество допустимых символов примерно миллионом (1112064). Но на практике в 2022 году было занято лишь 149186 символа. Кол-во символов увеличивается с каждым годом.
Примеры символов Юникода:
- $ — доллар, 36-й символ (U+0024)
- ꙮ — самая редкая буква кириллицы, используется только в одном слове мн҆огоꙮ҆читїи҆ (многоокий), 42606-й символ (U+A66E)
- 🐘 — эмодзи слона 128024-й символ (U+1F418)
Этот стандарт называется UCS (Universal Character Set)
Главные достоинства
- Универсальность: Юникод поддерживает символы почти всех языков мира. Это позволяет общаться, распознавать и понимать тексты на любом языке, от английского до японского.
- Совместимость: Юникод отлично поддерживается на большинстве современных устройств обеспечивает частичную совместимость с другими кодировками и платформами, что позволяет вашим текстам быть доступными и понятными для всех, вне зависимости от используемого ими программного обеспечения или устройства.
- Современное общение: Юникод активно поддерживает современные тренды, такие как эмодзи, которые стали ключевым элементом общения в интернете. Теперь вы можете полностью выразить свои мысли и эмоции в текстах и сообщениях.
- Развитие: Юникод постоянно развивается и обновляется, чтобы быть актуальным и отвечать на потребности современного общества. Используя Юникод, вы будете на переднем крае прогресса в области языков и кодирования.
- Уважение к культурам: Если вы интересуетесь историей и культурой, Юникод даст вам возможность исследовать древние и редкие письменности, которые стали доступными благодаря его универсальности.
- Эффективность: Юникод предлагает разные форматы кодирования, такие как UTF-8, UTF-16 и UTF-32, которые позволяют экономить место или обеспечивать лучшую производительность при работе с текстами.
- Международное сообщество: Изучая Юникод, вы становитесь частью глобального сообщества специалистов, исследователей и энтузиастов, которые заботятся о сохранении и развитии многообразия языков и культур мира
Зачем нужны кодировки UTF вместо UCS?
Уже на примере слона 🐘 с номером 128024 видно что он очень большой и не влезает в 2 байта, нужно минимум три:
128024 = 1 F4 18
= [00000001] [11110100] [00011000]
(номер слона в бинарном виде).
Казалось бы, всё просто — используй всегда 3 байта для каждой буквы. Но это очень расточительно с точки зрения использования места для хранения данных в памяти. Поэтому были придуманы варианты более эффективных кодировок UTF (UCS Transformation Format), которые упаковывают исходные номера букв в последовательности переменной длины от 1 до 4 байта:
- UTF-8 - кодировка переменной длины от 1 до 4 байт
- UTF-16 - кодировка переменной длины 2 или 4 байта
- UTF-32 - кодировка фиксированной длины 4 байта
Как работает UTF-8?
Самой эффективной на практике оказалась кодировка UTF-8, в ней часто используемые латинские буквы и цифры занимают всего 1 байт. Это не только вопрос экономии места — текст в однобайтовой кодировке стандарта ASCII будет правильно прочитан с использованием UTF-8. Поэтому UTF-8 стал самой популярной кодировкой в интернете и веб-приложениях.
Но если каждая буква имеет разную длину в байтах как компьютер в потоке единиц и нулей понимает где заканчивается предыдущая буква и начинается следующая?
Когда компьютер читает последовательность байтов, он смотрит сначала на первые биты и определяет итоговую длину символа:
0
= длина будет 1 байт110
= длина будет 2 байта1110
= длина будет 3 байта11110
= длина будет 4 байта
Дальше он читает дальше дополнительные байты в нужном количестве и выкидывает из них первые биты 10
(они нужны для сверки), все оставшиеся биты объединяет.
Итого:
[11110 000] [10 011111] [10 010000] [10 011000]
преобразуется в
000 011111 010000 011000
или
[00000001] [11110100] [00011000]
= 1 F4 18
= 128024
что является 128024-й символом Юникода U+1F418 и должно отображаться на экране как эмодзи слона
🐘
Устали? Давайте поиграем
Примеры некоторых Юникод символов для разных настольных игр 🁣🁩🁬
♚♛♘
🂠🂭🂸
⚀⚂⚅
🀁🀆🀇
. Текст увеличенного размера:
🁣 🁩 🁬 ♚ ♛ ♘ 🂠 🂭 🂸 ⚀ ⚂ ⚅ 🀁 🀆 🀇
Недостатки
Перечислить