Что такое unicode в информатике. Кодирование символов. Unicode. Стандарт кодирования символов Unicode

Каждый пользователь Интернета в попытках настроить ту или иную его функцию хотя бы однажды видел на дисплее написанное слово «Юникод». Что это такое, вы узнаете, прочитав эту статью.

Определение

Кодировка "Юникод" — стандарт кодирования символов. Он был предложен некоммерческой организацией Unicode Inc. в 1991 году. Стандарт разработан с целью объединения как можно большего числа разнотипных символов в одном документе. Страница, которая создана на его основе, может содержать в себе буквы и иероглифы из разных языков (от русского до корейского) и математические знаки. При этом все символы в данной кодировке отображаются без проблем.

Причины создания

Когда-то, задолго до появления единой системы "Юникод", кодировка выбиралась исходя из предпочтений автора документа. По этой причине нередко, чтобы прочитать один документ, нужно было использовать разные таблицы. Иногда это приходилось делать по несколько раз, что существенно усложняло жизнь обычному пользователю. Как уже было сказано, решение этой проблемы в 1991 году было предложено некоммерческой организацией Unicode Inc., предложившей новый тип кодирования символов. Он был призван объединить морально устаревшие и разнообразные стандарты. "Юникод" - кодировка, которая озволила добиться немыслимого на тот момент: создать инструмент, поддерживающий огромное количество символов. Результат превзошел многие ожидания - появились документы, одновременно содержащие как английский, так и русский текст, латынь и математические выражения.

Но созданию единой кодировки предшествовала необходимость разрешения ряда проблем, которые возникли из-за огромного разнообразия стандартов, уже существовавших на тот момент. Самые распространённые из них:

  • эльфийские письмена, или «кракозябры»;
  • ограниченность набора символов;
  • проблема преобразования кодировок;
  • дублирование шрифтов.

Небольшой исторический экскурс

Представьте, что на дворе 80-е. Компьютерная техника еще не так распространена и имеет вид, отличный от сегодняшнего. В то время каждая ОС по-своему уникальна и доработана каждым энтузиастом под конкретные нужды. Необходимость обмена информацией превращается в дополнительную доработку всего на свете. Попытка прочитать документ, созданный под другой ОС, зачастую выводит на экран непонятный набор символов, и начинаются игры с кодировкой. Не всегда получается сделать это быстро, и порой необходимый документ удаётся открыть через полгода, а то и позже. Люди, которые часто обмениваются информацией, создают для себя таблицы преобразования. И вот работа над ними выявляет интересную деталь: создавать их нужно по двум направлениям: «из моей в твою» и обратно. Сделать банальную инверсию вычислений машина не может, для нее в правом столбце исходник, а в левом - результат, но никак не наоборот. Если появлялась необходимость использовать какие-либо специальные символы в документе, их необходимо было сначала добавить, а потом еще и объяснить партнеру, что ему нужно сделать, чтобы эти символы не превратились в «кракозябры». И не будем забывать, что под каждую кодировку приходилось разрабатывать или внедрять собственные шрифты, что приводило к созданию огромного количества дублей в ОС.

Представьте еще, что на странице шрифтов вы увидите 10 штук идентичных Times New Roman с маленькими пометками: для UTF-8, UTF-16, ANSI, UCS-2. Теперь вы понимаете, что разработка универсального стандарта была настоятельной необходимостью?

«Отцы-создатели»

Истоки создания Unicode следует искать в 1987 году, когда Джо Беккер из Xerox вместе с Ли Коллинзом и Марком Дэвисом из компании Apple начали исследования в сфере практического создания универсального набора символов. В августе 1988 года Джо Беккер опубликовал проект предложения по созданию 16-битной международной многоязычной системы кодирования.

Через несколько месяцев рабочая группа Unicode была расширена за счет включения Кена Уистлера и Майка Кернегана из RLG, Гленн Райт из Sun Microsystems и нескольких других специалистов, что позволило завершить работы по предварительному формированию единого стандарта кодирования.

Общее описание

В основе Unicode лежит понятие символа. Под этим определением понимается абстрактное явление, существующее в конкретном виде письменности и реализуемое через графемы (свои «портреты»). Каждый символ задается в "Юникоде" уникальным кодом, принадлежащим конкретному блоку стандарта. Например, графема B есть и в английском, и в русском алфавитах, но в Unicode ей соответствуют 2 разных символа. К ним применяется преобразование в т. е. каждый из них описывается ключом базы данных, набором свойств и полным названием.

Преимущества Unicode

От остальных современников кодировка "Юникод" отличалась огромным запасом знаков для «шифрования» символов. Дело в том, что его предшественники имели 8 бит, то есть поддерживали 28 символов, а вот новая разработка имела уже 216 символов, что стало гигантским шагом вперед. Это позволило закодировать практически все существующие и распространённые алфавиты.

С появлением "Юникода" отпала надобность использовать таблицы преобразования: как единый стандарт он просто сводил на нет их необходимость. Точно так же канули в Лету и «кракозябры» - единый стандарт сделал их невозможными, равно как и исключил необходимость создания дублей шрифтов.

Развитие Unicode

Конечно, прогресс не стоит на месте, и с момента первой презентации минуло уже 25 лет. Однако кодировка "Юникод" упрямо удерживает свои позиции в мире. Во многом это стало возможным благодаря тому, что он стал легко внедряемым и получил распространение, будучи признанным разработчикам проприетарного (платного) и открытого ПО.

При этом не стоит полагать, что сегодня нам доступна та же кодировка "Юникод", что и четверть века назад. На данный момент ее версия сменилась на 5.х.х, а количество кодируемых символов возросло до 231. От возможности использовать больший запас знаков отказались, чтобы всё еще сохранить поддержку для Unicode-16 (кодировки, где максимальное их количество ограничивалось цифрой 216). С момента своего появления и до версии 2.0.0 "Юникод-стандарт" увеличил количество символов, которые в него входили, практически в 2 раза. Рост возможностей продолжался и в последующие годы. К версии 4.0.0 уже появилась необходимость увеличить сам стандарт, что и было сделано. В результате "Юникод" обрел тот вид, в котором мы его знаем сегодня.

Что еще есть в Unicode?

Помимо огромного, постоянно пополняющегося количества символов, имеет еще одну полезную черту. Речь идет о так называемой нормализации. Вместо того чтобы пролистывать весь документ символ за символом и подставлять соответствующие значки из таблицы соответствия, используется один из существующих алгоритмов нормализации. О чем речь?

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

Таких алгоритмов разработано и внедрено четыре. В каждом из них преобразование происходит по строго определенному принципу, отличающемуся от других, поэтому назвать какой-то один из них наиболее эффективным не представляется возможным. Каждый разрабатывался для определенных нужд, был внедрён и успешно используется.

Распространение стандарта

За 25 лет своей истории кодировка "Юникод" получила, вероятно, наибольшее распространение в мире. Под этот стандарт подгоняются также программы и web-страницы. О широте применения может говорить тот факт, что Unicode сегодня используют более 60 % интернет-ресурсов.

Теперь вам известно, когда появился стандарт "Юникод". Что это такое, вы также знаете и сможете оценить все значение изобретения, сделанного группой специалистов Unicode Inc. более 25 лет назад.

Для корректной работы данного сайта требуется JavaScript. Пожалуйста, включите поддержку JavaScript в настройках вашего обозревателя.

Таблица символов Юникода

Показать все
Диапазон: 0000-001F: Управляющие символы C0 0020-007F: Основная латиница 0080-009F: Управляющие символы C1 00A0-00FF: Дополнительные символы Latin-1 0100-017F: Расширенная латиница-A 0180-024F: Расширенная латиница-B 0250-02AF: Расширенный набор символов международного фонетического алфавита 02B0-02FF: Некомбинируемые протяжённые символы-модификаторы 0300-036F: Комбинируемые диакритические знаки 0370-03FF: Греческий и коптский алфавиты 0400-04FF: Кириллица 0500-052F: Дополнительные символы кириллицы 0530-058F: Армянский алфавит 0590-05FF: Иврит 0600-06FF: Арабское письмо 0700-074F: Сирийский алфавит 0750-077F: Дополнительные символы арабского письма 0780-07BF: Тана (мальдивское письмо) 07C0-07FF: Нко 0800-083F: Самаритянское письмо 0840-085F: Мандейский алфавит 08A0-08FF: Расширенный набор символов арабского письма-А 0900-097F: Деванагари 0980-09FF: Бенгальская 0A00-0A7F: Гурмукхи 0A80-0AFF: Гуджарати 0B00-0B7F: Ория 0B80-0BFF: Тамильская 0C00-0C7F: Телугу 0C80-0CFF: Каннада 0D00-0D7F: Малаялам 0D80-0DFF: Сингальская 0E00-0E7F: Тайская письменность 0E80-0EFF: Лаосская письменность 0F00-0FFF: Тибетская письменность 1000-109F: Мьянманская письменность 10A0-10FF: Грузинский алфавит 1100-11FF: Хангыль (корейская письменность) 1200-137F: Эфиопская слоговая письменность 1380-139F: Дополнительные символы эфиопской письменности 13A0-13FF: Письменность чероки 1400-167F: Канадское слоговое письмо 1680-169F: Огам 16A0-16FF: Руническая письменность 1700-171F: Тагальская (байбайин) 1720-173F: Хануноо 1740-175F: Бухид 1760-177F: Тагбанва 1780-17FF: Кхмерская письменность 1800-18AF: Старомонгольская письменность 18B0-18FF: Расширенный набор символов канадского слогового письма 1900-194F: Письменность лимбу 1950-197F: Письменность тай лэ 1980-19DF: Новый алфавит тай лы 19E0-19FF: Кхмерские символы 1A00-1A1F: Бугийская письменность (лонтара) 1A20-1AAF: Старый алфавит тай лы (Тай Тхам) 1B00-1B7F: Балийская письменность 1B80-1BBF: Сунданская письменность 1BC0-1BFF: Батакское письмо 1C00-1C4F: Письменность лепча (ронг) 1C50-1C7F: Письменность Ол Чики 1CD0-1CFF: Ведические символы 1D00-1D7F: Фонетические расширения 1D80-1DBF: Дополнительные фонетические расширения 1DC0-1DFF: Дополнительные комбинируемые диакритические знаки 1E00-1EFF: Дополнительная расширенная латиница 1F00-1FFF: Расширенный набор символов греческого алфавита 2000-206F: Знаки пунктуации 2070-209F: Надстрочные и подстрочные знаки 20A0-20CF: Символы валют 20D0-20FF: Комбинируемые диакритические знаки для символов 2100-214F: Буквоподобные символы 2150-218F: Числовые формы 2190-21FF: Стрелки 2200-22FF: Математические операторы 2300-23FF: Разнообразные технические символы 2400-243F: Значки управляющих кодов 2440-245F: Символы оптического распознавания 2460-24FF: Вложенные буквы и цифры 2500-257F: Символы для рисования рамок 2580-259F: Символы заполнения 25A0-25FF: Геометрические фигуры 2600-26FF: Разнообразные символы 2700-27BF: Дингбаты 27C0-27EF: Разнообразные математические символы-A 27F0-27FF: Дополнительные стрелки-A 2800-28FF: Азбука Брайля 2900-297F: Дополнительные стрелки-B 2980-29FF: Разнообразные математические символы-B 2A00-2AFF: Дополнительные математические операторы 2B00-2BFF: Разнообразные символы и стрелки 2C00-2C5F: Глаголица 1AB0-1AFF: Комбинированные диакритические знаки (расширение A) 1CC0-1CCF: Расширенный набор символов сунданского письма A9E0-A9FF: Мьянманская письменность (расширение B) AAE0-AAFF: Расширенный набор символов письменности мейтей AB30-AB8F: Расширенная латиница-E AB30-AB6F: Варанг-кшити AB90-ABBF: Письменность Бериа для языка загхава 2C60-2C7F: Расширенная латиница-C 2C80-2CFF: Коптский алфавит 2D00-2D2F: Дополнительные символы грузинского алфавита 2D30-2D7F: Тифинаг 2D80-2DDF: Расширенный набор символов эфиопского письма 2DE0-2DFF: Расширенная кириллица-A 2E00-2E7F: Дополнительные знаки пунктуации 2E80-2EFF: Дополнительные иероглифические ключи ККЯ 2F00-2FDF: Иероглифические ключи словаря Канси 2FF0-2FFF: Символы описания иероглифов 3000-303F: Символы и пунктуация ККЯ 3040-309F: Хирагана 30A0-30FF: Катакана 3100-312F: Чжуинь (бопомофо) 3130-318F: Чамо, комбинируемое с хангылем 3190-319F: Знаки, используемые в камбуне 31A0-31BF: Расширенный набор символов бопомофо 31C0-31EF: Черты ККЯ 31F0-31FF: Фонетические расширения катаканы 3200-32FF: Вложенные буквы и месяцы ККЯ 3300-33FF: Знаки совместимости ККЯ 3400-4DBF: Унифицированные иероглифы ККЯ (расширение А) 4DC0-4DFF: Гексаграммы И-Цзин 4E00-9FFF: Унифицированные иероглифы ККЯ A000-A48F: Слоги и A490-A4CF: Радикалы и A4D0-A4FF: Алфавит лису A500-A63F: Слоговая письменность ваи A640-A69F: Расширенная кириллица-B A6A0-A6FF: Письменность бамум A700-A71F: Символы изменения тона A720-A7FF: Расширенная латиница-D A800-A82F: Силоти Нагри A830-A83F: Индийские числовые символы A840-A87F: Квадратное письмо Пагба-ламы A880-A8DF: Саураштра A8E0-A8FF: Расширенный набор символов деванагари A900-A92F: Кайях Ли A930-A95F: Реджанг A960-A97F: Хангыль (расширение A) A980-A9DF: Яванская письменность AA00-AA5F: Тямское письмо AA60-AA7F: Мьянманская письменность (расширение A) AA80-AADF: Письменность Тай Вьет АВ00-АВ2F: Набор символов эфиопского письма (расширение A) ABC0-ABFF: Мейтей/Манипури AC00-D7AF: Слоги хангыля D800-DB7F: Верхняя часть суррогатных пар DB80-DBFF: Верхняя часть суррогатных пар для частного использования DC00-DFFF: Нижняя часть суррогатных пар E000-F8FF: Область для частного использования F900-FAFF: Совместимые иероглифы ККЯ FB00-FB4F: Алфавитные формы представления FB50-FDCF: Формы представления арабских букв-A FDF0-FDFF: Формы представления арабских букв-A FE00-FE0F: Селекторы вариантов начертания FE10-FE1F: Вертикальные формы FE20-FE2F: Комбинируемые половинки символов FE30-FE4F: Формы совместимости ККЯ FE50-FE6F: Варианты малого размера FE70-FEFF: Формы представления арабских букв-B FF00-FFEF: Полуширинные и полноширинные формы FFF0-FFFF: Специальные символы

  • Что такое Юникод?

    Юникод (англ. Unicode ) - это универсальный стандарт кодирования символов, который позволяет предоставить знаки всех языков мира.

    В отличие от ASCII , один символ кодируется двумя байтами, что позволяет использовать 65 536 символов, против 256 .

    Как известно, один байт - это целое число от нуля до 255 . В свою очередь, байт состоит из восьми бит, которые хранят числовые значения в двоичном виде, где каждая следующая единица текущего бита является в два раза большим значением предыдущего бита. Таким образом, два байта могут хранить в себе число от нуля до 65 535 , что и позволяет использовать 65 536 символов (ноль + 65 535 , ноль - это тоже число, он не является ничем).

    Символы Юникода разделены на секции. Первые 128 символов повторяют таблицу ASCII .

    За отображение символов отвечает семейство кодировок Юникода (Unicode Transformation Format - UTF ). Наиболее известная и широко применяемая кодировка - UTF-8 .

  • Как пользоваться таблицей?

    Символы представлены по 16 штук на строке. Сверху вы можете видеть шестнадцатеричное число от 0 до 16 . Слева аналогичные числа в шестнадцатеричном виде от 0 до FFF .
    Соединив число слева с числом сверху, можно узнать код символа. Например: английская буква F расположена на строке 004 , в столбике 6 : 004 + 6 = код символа 0046 .

    Впрочем, вы можете просто навести курсор на конкретный символ в таблице, чтобы узнать код символа. Либо нажать на символ, чтобы скопировать его, или его код в одном из форматов.

    В поисковое поле можно ввести ключевые слова поиска, например: стрелки, солнце, сердце. Либо можно указать код символа в любом формате, например: 1123, 04BC, چ. Или сам символ, если требуется узнать код символа.

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

Верите вы или нет, но существует формат изображений, встроенных в браузер. Этот формат позволяет загружать изображения до того, как они понадобились, обеспечивает рендеринг изображения на обычных или retina экранах и позволяет добавлять к изображениям CSS. ОК, это не совсем правда. Это не формат изображения, хотя все остальное остается в силе. Используя его, вы можете создавать иконки, независимые от разрешения, не требующие время на загрузку и стилизуемые с помощью CSS.

Что такое Юникод?

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

Юникод продолжает развиваться: сейчас актуальна версия 8.0 в которой более 120 тысяч символов (в оригинальной статье, опубликованной в начале 2014 года, речь шла о версии 6.3 и 110 тысячах символов).

Кроме букв и цифр, в Юникоде есть и другие символы и иконки. В последних версиях в их число вошли эмодзи , которые вы можете видеть в месседжере iOS.

Страницы HTML создаются из последовательности символов Юникода и при отсылке по сети они конвертируются в байты. Каждая буква и каждый символ любого языка имеют свой уникальный код и кодируются при сохранении файла.

При использовании системы кодирования UTF-8 вы можете напрямую вставлять в текст символы Юникода, но также можно добавлять их в текст, указывая цифровую символьную ссылку. Например, это символ сердечка и вы можете вывести этот символ, просто добавив код в разметку .

Эту числовую ссылку можно задавать как в десятичном формате, так и в шестнадцатеричном. Десятичный формат требует добавления в начале буквы x , запись даст то же самое сердечко ( ), что и предыдущий вариант. (2665 это шестнадцатеричный вариант 9829).

Если вы добавляете символ Юникода с помощью CSS, то вы можете использовать только шестнадцатеричные значения .

Некоторые наиболее часто используемые символы Юникода имеют более запоминаемые текстовые имена или аббревиатуры вместо цифровых кодов - это, например, амперсанд (& - &). Такие символы называются мнемоники в HTML , их полный список есть в Википедии .

Почему вам стоит использовать Юникод?

Хороший вопрос, вот несколько причин:

  1. Чтобы использовать корректные символы из разных языков.
  2. Для замены иконок.
  3. Для замены иконок, подключаемых через @font-face .
  4. Для задания CSS-классов

Корректные символы

Первая из причин не требует никаких дополнительных действий. Если HTML сохранен в формате UTF-8 и его кодировка передана по сети как UTF-8, все должно работать как надо.

Должно. К сожалению, не все браузеры и устройства поддерживают все символы Юникода одинаково (точнее, не все шрифты поддерживают полный набор символов). Например, недавно добавленные символы эмодзи поддерживаются не везде.

Для поддержки UTF-8 в HTML5 добавьте (при отсутствии доступа к настройкам сервера стоит добавить также ). При старом доктайпе используется ().

Иконки

Вторая причина использования Юникода это наличие большого количества полезных символов, которые можно использовать в качестве иконок. Например, , ≡ и .

Их очевидный плюс в том, что вам не надо никаких дополнительных файлов, чтобы добавить их на страницу, а, значит, ваш сайт будет быстрее. Вы также можете изменить их цвет или добавить тень с помощью CSS. А добавив переходы (css transition) вы сможете плавно менять цвет иконки при наведении на нее без каких-либо дополнительных изображений.

Предположим, что я хочу подключить индикатор рейтинга со звездами на свою страницу. Я могу сделать это так:

★ ★ ★ ☆ ☆

Получится следующий результат:

Но если вам не повезет, вы увидите что-то вроде этого:

Тот же рейтинг на BlackBerry 9000

Так бывает, если используемые символы отсутствуют в шрифте браузера или устройства (к счастью, эти звездочки поддерживаются отлично и старые телефоны BlackBerry являются здесь единственным исключением).

Если символ Юникода отсутствует, на его месте могут быть разные символы от пустого квадрата (□) до ромба со знаком вопроса (�).

А как найти символ Юникода, который может подойти для использования в вашем дизайне? Вы можете поискать его на сайте типа Unicodinator , просматривая имеющиеся символы, но есть и лучший вариант. - этот отличный сайт позволяет вам нарисовать искомую иконку, после чего предлагает вам список похожих символов Юникода.

Использование Юникода с @font-face иконками

Если вы используете иконки, подключаемые с внешним шрифтом через @font-face , символы Юникода можно использовать в качестве запасного варианта. Таким образом вы можете показать похожий символ Юникода на тех устройствах или в браузерах, где @font-face не поддерживается:

Слева иконки Font Awesome в Chrome, а справа замещающие их символы Юникода в Opera Mini.

Многие инструменты для подбора @font-face используют диапазон символов Юникода из области для частного использования (private use area). Проблема этого подхода в том, что если @font-face не поддерживается, пользователю передаются коды символов без какого-либо смысла.

Отлично подходит для создания наборов иконок в @font-face и позволяет выбрать в качестве основы для иконки подходящий символ Юникода.

Но будьте внимательны - некоторые браузеры и устройства не любят отдельные символы Юникода при их использовании с @font-face . Имеет смысл проверить поддержку символов Юникода с помощью Unify - это приложение поможет вам определить, насколько безопасно использование символа в наборе иконок @font-face .

Поддержка символов Юникода

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

Если ваша иконка это просто декоративный элемент рядом с текстовой меткой, читаемым скринридером, вы можете особо не волноваться. Но если иконка расположена отдельно, стоит добавить скрытую текстовую метку, чтобы помочь пользователям скринридеров. Даже если символ Юникода будет считан скринридером, есть вероятность, что он будет сильно отличен от своего предназначения. Например, ≡ (≡) в качестве иконки-гамбургера будет считан VoiceOver на iOS как “идентичный”.

Юникод в названиях CSS-классов

То, что Юникод можно использовать в названиях классов и в таблицах стилей известно с 2007 года. Именно тогда Джонатан Снук написал об использовании символов Юникода во вспомогательных классов при верстке скругленных углов . Особого распространения эта идея не получила, но о возможности использовать Юникод в названиях классов (спецсимволы или кириллицу) знать стоит.

Выбор шрифтов

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

Много иконок в Segoe UI Symbol или Arial Unicode MS . Эти шрифты есть и на PC и на Mac; в Lucida Grande также достаточное количество символов Юникода. Вы можете добавить эти шрифты в декларацию font-family , чтобы обеспечить наличие максимального количества символов Юникода для пользователей, у которых эти шрифты установлены.

Определение поддержки Юникода

Было бы очень удобно иметь возможность проверить наличие того или иного символа Юникода, но нет гарантированного способа сделать это.

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

Заключение

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

Список ссылок

  • (Генератор набора иконок @font-face на основе Юникода)
  • Shape Catcher (Инструмент для распознавания символов Юникода)
  • Unicodinator (таблица символов Юникода)
  • Unify (Проверка поддержки символов Юникода в браузерах)
  • Unitools (Коллекция инструментов для работы с Юникодом)

Любые числа (в определенных пределах) в памяти компьютера кодируются числами двоичной системы счисления. Для этого существуют простые и понятные правила перевода. Однако на сегодняшний день компьютер используется куда шире, чем в роли исполнителя трудоемких вычислений. Например, в памяти ЭВМ хранятся текстовая и мультимедийная информация. Поэтому возникает первый вопрос:

Как в памяти компьютера хранятся символы (буквы)?

Каждая буква принадлежит определенному алфавиту, в котором символы следуют друг за другом и, следовательно, могут быть пронумерованы последовательными целыми числами. Каждой букве можно сопоставить целое положительное число и назвать его кодом символа . Именно этот код будет храниться в памяти компьютера, а при выводе на экран или бумагу «преобразовываться» в соответствующий ему символ. Чтобы отличить представление чисел от представления символов в памяти компьютера, приходится также хранить информацию о том, какие именно данные закодированы в конкретной области памяти.

Соответствие букв определенного алфавита с числами-кодами формирует так называемую таблицу кодирования . Другими словами, каждый символ конкретного алфавита имеет свой числовой код в соответствии с определенной таблицей кодирования.

Однако алфавитов в мире очень много (английский, русский, китайский и др.). Поэтому следующий вопрос:

Как закодировать все используемые на компьютере алфавиты?

Для ответа на этот вопрос пойдем историческим путем.

В 60-х годах XX века в американском национальном институте стандартизации (ANSI) была разработана таблица кодирования символов, которая впоследствии была использована во всех операционных системах. Эта таблица называется ASCII (American Standard Code for Information Interchange – американский стандартный код для обмена информацией) . Чуть позже появилась расширенная версия ASCII .

В соответствие с таблицей кодирования ASCII для представления одного символа выделяется 1 байт (8 бит). Набор из 8 ячеек может принять 2 8 = 256 различных значений. Первые 128 значений (от 0 до 127) постоянны и формируют так называемую основную часть таблицы, куда входят десятичные цифры, буквы латинского алфавита (заглавные и строчные), знаки препинания (точка, запятая, скобки и др.), а также пробел и различные служебные символы (табуляция, перевод строки и др.). Значения от 128 до 255 формируют дополнительную часть таблицы, где принято кодировать символы национальных алфавитов.

Поскольку национальных алфавитов огромное множество, то расширенные ASCII-таблицы существуют во множестве вариантов. Даже для русского языка существуют несколько таблиц кодирования (распространены Windows-1251 и Koi8-r). Все это создает дополнительные трудности. Например, мы отправляем письмо, написанное в одной кодировке, а получатель пытается прочитать ее в другой. В результате видит кракозябры. Поэтому читающему требуется применить для текста другую таблицу кодирования.

Есть и другая проблема. В алфавитах некоторых языков слишком много символов и они не помещаются в отведенные им позиции с 128 до 255 однобайтовой кодировки.

Третья проблема - что делать, если в тексте используется несколько языков (например, русский, английский и французский)? Нельзя же использовать две таблицы сразу …

Чтобы решить эти проблемы одним разом была разработана кодировка Unicode.

Стандарт кодирования символов Unicode

Для решения вышеизложенных проблем в начале 90-х был разработан стандарт кодирования символов, получивший название Unicode . Данный стандарт позволяет использовать в тексте почти любые языки и символы.

В Unicode для кодирования символов предоставляется 31 бит (4 байта за вычетом одного бита). Количество возможных комбинаций дает запредельное число: 2 31 = 2 147 483 684 (т.е. более двух миллиардов). Поэтому Unicode описывает алфавиты всех известных языков, даже «мертвых» и выдуманных, включает многие математические и иные специальные символы. Однако информационная емкость 31-битового Unicode все равно остается слишком большой. Поэтому чаще используется сокращенная 16-битовая версия (2 16 = 65 536 значений), где кодируются все современные алфавиты.

В Unicode первые 128 кодов совпадают с таблицей ASCII.

Ряд цифр и букв имеют внешне схожее начертание, малоразличимое при небольшом размере шрифта. Например, цифры "0", "1" и буквы "О", "l" (L). Это является серьёзной проблемой, особенно в тех случаях, когда необходимо строго однозначное прочтение символов. К примеру, при записи ручкой на листке бумаги или печати на принтере своего буквенно-цифрового пароля. Решением данной проблемы пришлось заниматься первым программистам и фонт-дизайнерам (в XX-м веке, в самом начале компьютерной эры). Давно уже, появились специальные контрастные шрифты, такие как Inconsolata, Consolas (системный в OS Windows), Anonymous Pro, Deja Vu Sans Mono и многие другие. Некоторые из них можно бесплатно скачать по ссылкам с сайтов их авторов-создателей и с профильных Интернет-ресурсов.
Смотреть пример:
http://www.levien.com/type/myfonts/inconsolata.html

Если допускается техническими условиями и проектным заданием, то вместо цифрового нуля, в HTML-код ставится "Ø" (latin capital letter O with stroke, с косым штрихом, из модификации латинского алфавита для скандинавских языков - норвежского и датского), приблизительно похожий, своим начертанием, на перечёркнутый пополам нолик. В текстовом редакторе - такой значок берётся, копируется из таблицы спецсимволов (Special Character), и вставляется в нужную позицию в строке. Данный лайфхак-приём будет полезен, если возникают сложности с поиском и установкой на девайс специального фонта. Этот совет позволит сэкономить время и не перепутать цифру "0" (zero) с буквой "О" не только на мониторе вашего ПК, но и на экранах других устройств, где может не оказаться нужного шрифта. Такая форма записи, традиционно, применяется при обозначении на листе бумаги смешанной, буквенно-цифровой информации, например, своего пароля, кода доступа. Примечательно, что даже есть шутливое выражение " ", подчёркивающее важность наличия этого элемента, наделяющего символ определённым смыслом и значением. Графический вид нуля в разных типах шрифтов - можно посмотреть и сравнить их изображение на картинках с помощью специализированного сервиса на странице сайта:
http://www.fileformat.info/info/unicode/char/0030/fontsupport.htm

Рисунок 2

При редактировании и правке текста, перечёркивание неправильно написанного или ненужного символа - производится большим косым крестиком (двумя крест-накрест перекрещивающимися диагональными штрихами равной длины). В текстовом редакторе это осуществляется средствами форматирования - сначала выделяется фрагмент, а затем в меню нажимается последовательность кнопок и вкладок (Format - Character - Font Effects - Strikethrough) для выбора из выпадающих списков необходимого эффекта. Зачёркивание одного или нескольких слов в строчке или в целом абзаце документа - делается с помощью горизонтальной одинарной или двойной линии, достаточной толщины.

Если нужно точно выяснить, что в тексте написано - буква или цифра, то можно, в режиме поиска на странице, задать нужный символ и убедиться, что он будет найден именно там.