ASCII, UTF-8, ISO-8859… Возможно, вы видели эти странные названия, но что они на самом деле означают? Читайте дальше, когда мы объясним, что такое кодировка символов и как эти сокращения соотносятся с простым текстом, который мы видим на экране.
Основные строительные блоки
Когда мы говорим о письменной речи, мы говорим о буквах, которые являются строительными блоками слов, из которых затем строятся предложения, абзацы и так далее. Буквы - это символы, обозначающие звуки. Когда вы говорите о языке, вы имеете в виду группы звуков, которые объединяются, чтобы сформировать какое-то значение. Каждая языковая система имеет сложный набор правил и определений, регулирующих эти значения. Если у вас есть слово, оно бесполезно, если вы не знаете, на каком оно языке, и не используете его с людьми, говорящими на этом языке.
(Сравнение скриптов Гранта, Тулу и Малаялам, изображение из Википедия )
В мире компьютеров мы используем термин «персонаж». Символ - это своего рода абстрактное понятие, определяемое определенными параметрами, но это основная единица значения. Латинская «А» не то же самое, что греческое «альфа» или арабское «алиф», потому что они имеют разный контекст - они принадлежат к разным языкам и имеют немного другое произношение - поэтому мы можем сказать, что это разные символы. Визуальное представление символа называется «глифом», а различные наборы глифов - шрифтами. Группы персонажей принадлежат к «набору» или «репертуару».
Когда вы набираете абзац и меняете шрифт, вы не меняете фонетические значения букв, вы меняете их внешний вид. Это просто косметика (но не маловажная!). Некоторые языки, например древнеегипетский и китайский, имеют идеограммы; они представляют собой целые идеи, а не звуки, и их произношение может меняться со временем и на расстоянии. Если вы заменяете один символ другим, вы заменяете идею. Это больше, чем просто изменение букв, это изменение идеограммы.
Кодировка символов
(Изображение из Википедия )
Когда вы вводите что-то на клавиатуре или загружаете файл, как компьютер узнает, что отображать? Вот для чего нужна кодировка символов. Текст на вашем компьютере - это не буквы, это набор парных буквенно-цифровых значений. Кодировка символов действует как ключ, для которого значения соответствуют каким символам, так же как орфография диктует, какие звуки соответствуют каким буквам. Код Морзе - это своего рода кодировка символов. Он объясняет, как группы длинных и коротких единиц, таких как гудки, представляют символы. В коде Морзе символы представляют собой просто английские буквы, цифры и точки. Существует множество компьютерных кодировок символов, которые переводятся в буквы, цифры, знаки ударения, знаки препинания, международные символы и т. Д.
Часто в этой теме также используется термин «кодовые страницы». По сути, это кодировки символов, используемые конкретными компаниями, часто с небольшими изменениями. Например, кодовая страница Windows 1252 (ранее известная как ANSI 1252) является модифицированной формой ISO-8859-1. В основном они используются как внутренняя система для обозначения стандартных и измененных кодировок символов, характерных для одних и тех же систем. Вначале кодировка символов не имела большого значения, потому что компьютеры не взаимодействовали друг с другом. Поскольку Интернет становится все более заметным, а создание сетей становится обычным явлением, он становится все более важным в нашей повседневной жизни, а мы даже не осознаем этого.
Много разных типов
(Изображение из Сара Сосиак )
Существует множество различных кодировок символов, и для этого есть множество причин. Выбор кодировки символов зависит от ваших потребностей. Если вы общаетесь на русском языке, имеет смысл использовать кодировку символов, хорошо поддерживающую кириллицу. Если вы общаетесь на корейском языке, вам нужно что-то, что хорошо представляет хангыль и ханджу. Если вы математик, вам нужно что-то, в котором хорошо представлены все научные и математические символы, а также греческие и латинские глифы. Если вы шутник, возможно, вам пригодится перевернутый текст . И, если вы хотите, чтобы все эти типы документов просматривал любой конкретный человек, вам нужна довольно распространенная и легкодоступная кодировка.
Давайте посмотрим на некоторые из наиболее распространенных.
(Выдержка из таблицы ASCII, изображение из асциитабле.ком )
- ASCII - Американский стандартный код обмена информацией - одна из самых старых кодировок символов. Первоначально он был разработан на основе телеграфных кодов и со временем эволюционировал, чтобы включить в него больше символов и некоторые устаревшие непечатаемые управляющие символы. Вероятно, это самый простой вариант с точки зрения современных систем, поскольку он ограничен латинским алфавитом без диакритических знаков. Его 7-битная кодировка позволяет использовать только 128 символов, поэтому в мире существует несколько неофициальных вариантов.
- ISO-8859 - Наиболее широко используемой группой кодировок символов Международной организации по стандартизации является номер 8859. Каждая конкретная кодировка обозначается числом, часто с префиксом описательного прозвища, например ISO-8859-3 (Latin-3), ISO-8859-6 (Latin / Arabic). Это расширенный набор ASCII, означающий, что первые 128 значений в кодировке такие же, как ASCII. Однако он 8-битный и позволяет использовать 256 символов, поэтому он строится оттуда и включает гораздо более широкий набор символов, причем каждая конкретная кодировка ориентирована на свой набор критериев. Latin-1 включал в себя набор букв и символов с акцентом, но позже был заменен обновленным набором под названием Latin-9, который включает обновленные глифы, такие как символ евро.
(Отрывок из тибетского сценария, Unicode v4, из уникоде.орг )
- Unicode - Этот стандарт кодирования нацелен на универсальность. В настоящее время он включает 93 скрипта, организованных в несколько блоков, и многие другие находятся в разработке. Юникод работает иначе, чем другие наборы символов, поскольку вместо прямого кодирования глифа каждое значение направляется дальше к «кодовой точке». Это шестнадцатеричные значения, которые соответствуют символам, но сами глифы предоставляются отдельным способом программой, например вашим веб-браузером. Эти кодовые точки обычно обозначаются следующим образом: U + 0040 (что переводится как ‘@’ ). Конкретные кодировки в соответствии со стандартом Unicode - это UTF-8 и UTF-16. UTF-8 пытается обеспечить максимальную совместимость с ASCII. Он 8-битный, но позволяет использовать все символы с помощью механизма подстановки и нескольких пар значений для каждого символа. UTF-16 отказывается от идеальной совместимости с ASCII для более полной 16-битной совместимости со стандартом.
- ISO-10646 - Это не настоящая кодировка, а просто набор символов Unicode, стандартизированный ISO. Это наиболее важно, потому что это репертуар персонажей, используемый HTML. Некоторые из более продвинутых функций, предоставляемых Unicode, которые позволяют выполнять сортировку и писать сценарии справа налево наряду с написанием сценариев слева направо, отсутствуют. Тем не менее, он очень хорошо работает для использования в Интернете, поскольку позволяет использовать самые разные сценарии и позволяет браузеру интерпретировать глифы. Это несколько упрощает локализацию.
Какую кодировку мне использовать?
Что ж, ASCII работает для большинства англоговорящих людей, но не для чего-то еще. Чаще вы будете встречать ISO-8859-1, который работает для большинства западноевропейских языков. Другие версии ISO-8859 работают с кириллицей, арабским, греческим или другими специфическими шрифтами. Однако, если вы хотите отображать несколько сценариев в одном документе или на одной веб-странице, UTF-8 обеспечивает гораздо лучшую совместимость. Он также очень хорошо работает для людей, которые используют правильную пунктуацию, математические символы или нестандартные символы, такие как квадраты и флажки .
(Несколько языков в одном документе, снимок экрана гуйаратсамачар.ком )
Однако у каждого набора есть свои недостатки. ASCII имеет ограниченные знаки препинания, поэтому он не очень хорошо подходит для типографически правильных правок. Вы когда-нибудь печатали копировать / вставить из Word только для того, чтобы получить какую-то странную комбинацию глифов? Это недостаток ISO-8859, или, точнее, его предполагаемая совместимость с кодовыми страницами, специфичными для ОС (мы смотрим на ВАС, Microsoft!). Главный недостаток UTF-8 - отсутствие надлежащей поддержки при редактировании и публикации приложений. Другая проблема заключается в том, что браузеры часто не интерпретируют, а просто отображают метку порядка байтов символов в кодировке UTF-8. Это приводит к отображению нежелательных глифов. И, конечно же, объявление одной кодировки и использование символов из другой без объявления / ссылки на них должным образом на веб-странице затрудняет их правильное отображение браузерами и их надлежащую индексацию для поисковых систем.
Для ваших собственных документов, рукописей и т. Д. Вы можете использовать все, что вам нужно для выполнения работы. Что касается Интернета, то кажется, что большинство людей согласны использовать версию UTF-8, в которой не используется отметка порядка байтов, но это не совсем единодушное мнение. Как видите, каждая кодировка символов имеет свое использование, контекст, а также сильные и слабые стороны. Как конечный пользователь, вам, вероятно, не придется с этим сталкиваться, но теперь вы можете сделать дополнительный шаг вперед, если захотите.