Перейти к содержанию

Unicode: различия между версиями

353 байта добавлено ,  17:22, 8 апреля 2023
нет описания правки
(Unicode, основная статья)
Нет описания правки
Строка 46: Строка 46:
* '''Международное сообщество''': Изучая Юникод, вы становитесь частью глобального сообщества специалистов, исследователей и энтузиастов, которые заботятся о сохранении и развитии многообразия языков и культур мира
* '''Международное сообщество''': Изучая Юникод, вы становитесь частью глобального сообщества специалистов, исследователей и энтузиастов, которые заботятся о сохранении и развитии многообразия языков и культур мира


=== '''Зачем понадобились дополнительные кодировки UTF вместо UCS?''' ===
=== Зачем нужны кодировки UTF вместо UCS? ===
Уже на примере слона 🐘 с номером 128024 видно что он очень большой и не влезает в 2 байта, нужно минимум три:
Уже на примере слона 🐘 с номером 128024 видно что он очень большой и не влезает в 2 байта, нужно минимум три:


Строка 58: Строка 58:


=== Как работает UTF-8? ===
=== Как работает UTF-8? ===
Самой эффективной на практике оказалась кодировка '''UTF-8''', так часто используемые латинские буквы и цифры в ней занимают всего 1 байт. Это не только вопрос экономии места — текст в однобайтовой кодировке стандарта ASCII будет правильно прочитан с использованием UTF-8. Поэтому UTF-8 стал самой популярной кодировкой в интернете и веб-приложениях.
Самой эффективной на практике оказалась кодировка '''UTF-8''', в ней часто используемые латинские буквы и цифры занимают всего 1 байт. Это не только вопрос экономии места — текст в однобайтовой кодировке стандарта ASCII будет правильно прочитан с использованием UTF-8. Поэтому UTF-8 стал самой популярной кодировкой в интернете и веб-приложениях.


Но если каждая буква имеет разную длину в байтах как компьютер в потоке единиц и нулей понимает где заканчивается предыдущая буква и начинается следующая?
Но если каждая буква имеет '''разную длину''' в байтах как компьютер в потоке единиц и нулей понимает где заканчивается предыдущая буква и начинается следующая?


Когда компьютер читает последовательность байтов, он смотрит на первые биты и определяет длину символа:
Когда компьютер читает последовательность байтов, он смотрит сначала на первые биты и определяет итоговую длину символа:


* <code>0</code> = длина будет 1 байт
* <code>0</code> = длина будет 1 байт
Строка 69: Строка 69:
* <code>11110</code> = длина будет 4 байта
* <code>11110</code> = длина будет 4 байта


Дальше он читает остальные байты и выкидывает из каждого байта лишние биты <code>10</code> (они нужны для сверки), оставшиеся биты объединяет.
Дальше он читает дальше дополнительные байты в нужном количестве и выкидывает из них первые биты <code>10</code> (они нужны для сверки), все оставшиеся биты объединяет.


Итого:
Итого:
Строка 83: Строка 83:
<code>[00000001] [11110100] [00011000]</code> = <code>1 F4 18</code>  = 128024
<code>[00000001] [11110100] [00011000]</code> = <code>1 F4 18</code>  = 128024


что является Unicode символом U+1F418  
что является 128024-й символом Юникода U+1F418 и должно отображаться на экране как эмодзи слона


А по стандарту '''UCS''' этот 128024-й символ, должно отображаться на экране как эмодзи слона
🐘


🐘
=== Устали? Давайте поиграем ===
Примеры некоторых Юникод символов для разных настольных игр. Это не картинки, а текст увеличенного размера:


Фух, устали? Давайте поиграем
<span style="font-size:100px">🁣🁩🁬</span><span style="font-size:100px">♚♛♘</span><span style="font-size:100px">🂠🂭🂸</span><span style="font-size:100px">⚀⚂⚅</span><span style="font-size:85px">🀁🀆🀇</span>


Здесь будут вставлены игровые символы
=== Недостатки ===
 
Недостатки  


Перечислить
Перечислить