Unicode: различия между версиями
AE (обсуждение | вклад) Нет описания правки Метка: визуальный редактор отключён |
AE (обсуждение | вклад) (Правки и улучшения) |
||
(не показаны 4 промежуточные версии этого же участника) | |||
Строка 1: | Строка 1: | ||
'''Unicode''' (Юникод) — | '''Unicode''' (Юникод) — общепринятый международный стандарт, который позволяет преобразовать буквы разных языков и символы в цифровой вид. Для этого каждому символу присваивается уникальный номер. Благодаря Юникоду, пользователи могут свободно обмениваться информацией в [[Интернет|интернете]] на любом предпочитаемом языке. | ||
== Объясните простыми словами, пожалуйста == | == Объясните простыми словами, пожалуйста == | ||
Строка 9: | Строка 9: | ||
'''Но неудобно'''. Когда нужно было "пообщаться" приходилось бегать к стене с картинками или устраивать представление. Тогда было решено закодировать образы и действия определенными звуками. Звуки объединялись в последовательности и так появились '''слова'''. Люди начали говорить и общались звуками тысячи лет, всё было прекрасно! 🧔💬 | '''Но неудобно'''. Когда нужно было "пообщаться" приходилось бегать к стене с картинками или устраивать представление. Тогда было решено закодировать образы и действия определенными звуками. Звуки объединялись в последовательности и так появились '''слова'''. Люди начали говорить и общались звуками тысячи лет, всё было прекрасно! 🧔💬 | ||
'''Но неудобно'''. Звук не получалось | '''Но неудобно'''. Звук не получалось поймать и положить на хранение. И люди опять вернулись к рисованию. Но рисовали уже не животных на стенах, а звуки и слова. Эти кодирующие рисунки становились проще и со временем превратились в '''буквы'''. Их рисовали на тонких листочках, собирали в книги, хранили и передавали знания. Всё было прекрасно! 🧑🎓📚 | ||
'''Но неудобно'''. Когда нужно передать буквы из одного города в другой — их надо туда нести. А в провода буквы не влезают. Тогда пришлось кодировать уже буквы слов в виде последовательности коротких и длинных сигналов — так появилась '''азбука Морзе''' и всё было прекрасно! 🚢🆘 | '''Но неудобно'''. Когда нужно передать буквы из одного города в другой — их надо туда нести. А в провода буквы не влезают. Тогда пришлось кодировать уже буквы слов в виде последовательности коротких и длинных сигналов — так появилась '''азбука Морзе''' и всё было прекрасно! 🚢🆘 | ||
Строка 15: | Строка 15: | ||
'''Но неудобно'''. Азбука Морзе передавала информацию медленно, сложно, неинтересно. С развитием компьютеров, она была заменена цифровым '''двоичным''' кодом. Где каждой букве была сопоставлена последовательность единиц и нулей. И всё было прекрасн0111 | '''Но неудобно'''. Азбука Морзе передавала информацию медленно, сложно, неинтересно. С развитием компьютеров, она была заменена цифровым '''двоичным''' кодом. Где каждой букве была сопоставлена последовательность единиц и нулей. И всё было прекрасн0111 | ||
'''Но неудобно'''. Каждый начал | '''Но неудобно'''. Каждый начал кодировать буквы единицами и нулями по-своему. Причина в большом количестве разнообразных языков и алфавитов. Люди страдали и ругались, пытаясь угадать, какую из сотен кодировок надо применить, для того чтобы расшифровать эту '''文字化け''' из файла в электронном письме. Всё было ужасно! 🤬 | ||
И здесь появился '''Юникод''' | И здесь появился '''Юникод''' — международный алфавит, объединивший и упорядочивший буквы почти всех языков мира! Именно его мы используем прямо сейчас, общаясь в интернете с человеком из любой страны на любом языке да еще и с [[Emoji|эмодзи]]-картинками. И всё — прекрасно! 😇 | ||
'''И удобно | '''И удобно?''' | ||
'''PS''' ходят легенды, что школьники на уроках до сих пор рисуют ''палочками'' с краской на ''деревянных'' листочках странные ''головы быков'': ⱯАААА! ✍️ | '''PS''' ходят легенды, что школьники на уроках до сих пор рисуют ''палочками'' с краской на ''деревянных'' листочках странные ''головы быков'': ⱯАААА! ✍️ | ||
Строка 26: | Строка 26: | ||
=== Международный стандарт === | === Международный стандарт === | ||
'''Юникод''' был создан в 1991 году и в данный момент является стандартом соответствия каждого символа некоторому порядковому номеру — кодовой точке. Стандарт ограничивает количество допустимых символов примерно миллионом (1112064). Но на практике в 2022 году было занято лишь 149186 символа. | '''Юникод''' был создан в 1991 году и в данный момент является стандартом соответствия каждого символа некоторому порядковому номеру — кодовой точке. Стандарт ограничивает количество допустимых символов примерно миллионом (1112064). Но на практике в 2022 году было занято лишь 149186 символа. Количество символов увеличивается с каждым годом. | ||
Примеры символов Юникода: | Примеры символов Юникода: | ||
Строка 34: | Строка 34: | ||
* 🐘 — [[Emoji|эмодзи]] слона 128024-й символ (U+1F418) | * 🐘 — [[Emoji|эмодзи]] слона 128024-й символ (U+1F418) | ||
Этот стандарт называется '''UCS''' (Universal Character Set) | Этот стандарт называется '''UCS''' (Universal Character Set — Универсальный набор символов) | ||
=== Главные достоинства === | === Главные достоинства === | ||
* '''Универсальность''': Юникод поддерживает символы почти всех языков мира. Это позволяет общаться, распознавать и понимать тексты на любом языке, от английского до | * '''Универсальность''': Юникод поддерживает символы почти всех языков мира. Это позволяет общаться, распознавать и понимать тексты на любом языке, от английского и японского, до языков древних цивилизаций. | ||
* '''Совместимость''': Юникод отлично поддерживается на большинстве современных устройств обеспечивает частичную совместимость с другими кодировками и платформами | * '''Совместимость''': Юникод отлично поддерживается на большинстве современных устройств и обеспечивает частичную совместимость с другими кодировками и платформами. Это позволяет вашим текстам быть доступными и понятными для всех, вне зависимости от используемого ими программного обеспечения или устройства. | ||
* '''Современное общение''': Юникод активно поддерживает современные тренды, такие как эмодзи, которые стали ключевым элементом общения в интернете. | * '''Современное общение''': Юникод активно поддерживает современные тренды, такие как эмодзи, которые стали ключевым элементом общения в интернете. Благодаря им, вы можете полностью выразить свои мысли и эмоции в текстах и сообщениях. | ||
* '''Развитие''': Юникод постоянно развивается и обновляется, чтобы быть актуальным и отвечать на потребности современного общества. Используя Юникод, вы будете на переднем крае прогресса в области языков и кодирования. | * '''Развитие''': Юникод постоянно развивается и обновляется, чтобы быть актуальным и отвечать на потребности современного общества. Используя Юникод, вы будете на переднем крае прогресса в области языков и кодирования. | ||
* '''Уважение к культурам''': | * '''Уважение к культурам''': Юникод дает возможность исследовать древние и редкие письменности, которые стали более доступными благодаря его универсальности. Изучая Юникод, вы становитесь частью глобального сообщества специалистов, исследователей и энтузиастов, которые заботятся о сохранении многообразия языков и культур мира. | ||
* '''Эффективность''': Юникод предлагает разные форматы кодирования, такие как UTF-8, UTF-16 и UTF-32, которые позволяют экономить место или обеспечивать лучшую производительность при работе с текстами. | * '''Эффективность''': Юникод предлагает на выбор разные форматы кодирования, такие как UTF-8, UTF-16 и UTF-32, которые позволяют экономить место или обеспечивать лучшую производительность при работе с текстами. | ||
=== Зачем нужны кодировки UTF | === Зачем нужны кодировки UTF для Unicode? === | ||
Уже на примере слона 🐘 с номером 128024 видно что он очень большой и не влезает в 2 байта, нужно минимум три: | Уже на примере слона 🐘 с номером 128024 видно, что он очень большой и не влезает в 2 байта, нужно минимум три: | ||
128024 = <code>1 F4 18</code> = <code>[00000001] [11110100] [00011000]</code> (номер слона в бинарном виде). | 128024 = <code>1 F4 18</code> = <code>[00000001] [11110100] [00011000]</code> (номер слона в бинарном виде). | ||
Казалось бы, всё просто — используй всегда 3 байта для каждой буквы. Но это очень расточительно | Казалось бы, всё просто — используй всегда 3 байта для каждой буквы. Но это очень расточительно расходует память компьютера для хранения данных. Поэтому были придуманы варианты более эффективных кодировок '''UTF''' (UCS Transformation Format), которые упаковывают исходные номера букв в последовательности переменной длины от 1 до 4 байта: | ||
* '''UTF-8''' - кодировка переменной длины от 1 до 4 байт | * '''UTF-8''' - кодировка переменной длины от 1 до 4 байт | ||
Строка 58: | Строка 57: | ||
=== Как работает UTF-8? === | === Как работает UTF-8? === | ||
Самой эффективной на практике оказалась кодировка '''UTF-8''', в ней часто используемые латинские буквы и цифры занимают всего 1 байт. Это не только вопрос экономии места — текст в однобайтовой кодировке | Самой эффективной на практике оказалась кодировка '''UTF-8''', в ней часто используемые латинские буквы и цифры занимают всего 1 байт. Это не только вопрос экономии места, но и обратной совместимости — цифровой текст в ранее популярной однобайтовой кодировке ASCII будет правильно прочитан в UTF-8. Как результат, UTF-8 стал лучшей кодировкой для текстов в интернете и веб-приложениях. | ||
Но если каждая буква имеет '''разную длину''' в байтах как компьютер в потоке единиц и нулей понимает где заканчивается предыдущая буква и начинается следующая? | Но если каждая буква имеет '''разную длину''' в байтах, как компьютер в потоке единиц и нулей понимает, где заканчивается предыдущая буква и начинается следующая? | ||
Когда компьютер читает последовательность байтов, он смотрит сначала на первые биты и определяет итоговую длину символа: | Когда компьютер читает последовательность байтов, он смотрит сначала на первые биты байта и определяет итоговую длину символа: | ||
* <code>0</code> = длина будет 1 байт | * <code>0</code> = длина будет 1 байт | ||
Строка 69: | Строка 68: | ||
* <code>11110</code> = длина будет 4 байта | * <code>11110</code> = длина будет 4 байта | ||
Зная длину символа, он читает следующие байты в нужном количестве и выкидывает из них первые биты <code>10</code> (они нужны для сверки), а все оставшиеся биты объединяет. | |||
Итого: | Итого: | ||
<code>[11110 '''000'''] [10 ''' | <code>[<s>11110</s> '''000'''] [<s>10</s> '''0<u>11111</u>'''] [<s>10</s> '''0<u>1</u>0000'''] [<s>10</s> '''0<u>11</u>000''']</code> | ||
преобразуется в | преобразуется в | ||
<code>000 | <code>000 0<u>11111</u> 0<u>1</u>0000 0<u>11</u>000</code> | ||
или | или | ||
<code>[ | <code>[0000000<u>1</u>] [<u>1111</u>0<u>1</u>00] [000<u>11</u>000]</code> = <code>1 F4 18</code> = 128024 | ||
что является 128024-й символом Юникода U+1F418 и должно отображаться на экране как эмодзи слона | что является 128024-й символом Юникода U+1F418 и должно отображаться на экране как эмодзи слона | ||
🐘 | <code>🐘</code> | ||
=== | === Поиграем? === | ||
Юникод содержит текстовые символы всех элементов популярных настольных игр. Примеры некоторых из них: <code>🁣🁩🁬</code> <code>♚♛♘</code> <code>🂠🂭🂸</code> <code>⚀⚂⚅</code> <code>🀁🀆🀇</code>. Текст увеличенного размера: | |||
<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> | ||
=== Недостатки === | === Недостатки === | ||
* '''Сложность понимания''': Из-за огромного количества символов и разных форматов кодирования Unicode может быть сложным для понимания и использования, особенно для новичков в IT. | |||
* '''Многосимвольные символы''': Вместо включения дополнительных символов в стандарт, иногда применяются «костыли» с комбинациями. 👨 + U+200D + 👩 + U+200D + 👧 + U+200D + 👦 = 👨👩👧👦 | |||
* '''Различное отображение''': Юникод — не шрифт и не содержит информации, как отображать символы. Нет никаких гарантий, что ваш символ будет отображен у другого пользователя в том же виде. | |||
* '''Проблемы с совместимостью''': Очень старые программы и устройства могут не поддерживать Unicode или часть его нововведений. Это может привести к неправильному отображению текста, замене символов на знаки вопроса � или прямоугольники ▯. | |||
* '''Размер данных''': Использование Unicode может привести к увеличению размера файлов, в сравнении с кодировками, заточенными под определенный язык. Это может увеличить затраты на хранение данных при больших объемах. | |||
* '''Низкая производительность''': Из-за сложности разбора UTF кодировок, производительность программ по обработке текстов может быть ниже в сравнении с более простыми, но менее универсальными кодировками. | |||
* '''Постоянные обновления''': Стандарт постоянно обновляется. Это может вызвать сложности в отслеживании изменений и поддержании актуальности ваших приложений или устройств. | |||
=== Дополнительные статьи === | |||
* [[Emoji]] — здесь перечислены все символы эмодзи с разбивкой на группы по оригинальному стандарту Юникод |
Текущая версия от 13:28, 9 апреля 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 для Unicode?[править | править код]
Уже на примере слона 🐘 с номером 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 и должно отображаться на экране как эмодзи слона
🐘
Поиграем?[править | править код]
Юникод содержит текстовые символы всех элементов популярных настольных игр. Примеры некоторых из них: 🁣🁩🁬
♚♛♘
🂠🂭🂸
⚀⚂⚅
🀁🀆🀇
. Текст увеличенного размера:
🁣 🁩 🁬 ♚ ♛ ♘ 🂠 🂭 🂸 ⚀ ⚂ ⚅ 🀁 🀆 🀇
Недостатки[править | править код]
- Сложность понимания: Из-за огромного количества символов и разных форматов кодирования Unicode может быть сложным для понимания и использования, особенно для новичков в IT.
- Многосимвольные символы: Вместо включения дополнительных символов в стандарт, иногда применяются «костыли» с комбинациями. 👨 + U+200D + 👩 + U+200D + 👧 + U+200D + 👦 = 👨👩👧👦
- Различное отображение: Юникод — не шрифт и не содержит информации, как отображать символы. Нет никаких гарантий, что ваш символ будет отображен у другого пользователя в том же виде.
- Проблемы с совместимостью: Очень старые программы и устройства могут не поддерживать Unicode или часть его нововведений. Это может привести к неправильному отображению текста, замене символов на знаки вопроса � или прямоугольники ▯.
- Размер данных: Использование Unicode может привести к увеличению размера файлов, в сравнении с кодировками, заточенными под определенный язык. Это может увеличить затраты на хранение данных при больших объемах.
- Низкая производительность: Из-за сложности разбора UTF кодировок, производительность программ по обработке текстов может быть ниже в сравнении с более простыми, но менее универсальными кодировками.
- Постоянные обновления: Стандарт постоянно обновляется. Это может вызвать сложности в отслеживании изменений и поддержании актуальности ваших приложений или устройств.
Дополнительные статьи[править | править код]
- Emoji — здесь перечислены все символы эмодзи с разбивкой на группы по оригинальному стандарту Юникод