Что такое кодировки символов, такие как ANSI и Unicode, и чем они отличаются?
ASCII, UTF-8, ISO-8859 ... Возможно, вы видели этих странных прозвищ, плавающих вокруг, но что они на самом деле означают? Читайте дальше, объясняя, что такое кодировка символов и как эти сокращения соотносятся с простым текстом, который мы видим на экране..
Фундаментальные строительные блоки
Когда мы говорим о письменном языке, мы говорим о том, что буквы являются строительными блоками слов, которые затем строят предложения, абзацы и так далее. Буквы - это символы, которые представляют звуки. Когда вы говорите о языке, вы говорите о группах звуков, которые объединяются, чтобы сформировать какое-то значение. Каждая языковая система имеет сложный набор правил и определений, которые управляют этими значениями. Если у вас есть слово, оно бесполезно, если вы не знаете, на каком языке оно написано, и не используете его с другими людьми, которые говорят на этом языке..
(Сравнение сценариев Гранта, Тулу и Малаялам, Изображение из Википедии)
В мире компьютеров мы используем термин «персонаж». Символ - это своего рода абстрактное понятие, определяемое конкретными параметрами, но оно является фундаментальной единицей значения. Латинская буква «А» - это не то же самое, что греческая «альфа» или арабская «алиф», потому что они имеют разные контексты - они из разных языков и имеют немного разные произношения - поэтому мы можем сказать, что это разные символы. Визуальное представление символа называется «глиф», а различные наборы символов называются шрифтами. Группы персонажей принадлежат «сету» или «репертуару».
Когда вы печатаете абзац и меняете шрифт, вы не меняете фонетические значения букв, вы меняете их внешний вид. Это просто косметика (но не маловажно!). Некоторые языки, такие как древнеегипетский и китайский, имеют идеограммы; они представляют собой целые идеи, а не звуки, и их произношение может изменяться во времени и на расстоянии. Если вы заменяете одного персонажа другим, вы подставляете идею. Это больше, чем просто смена букв, это смена идеограммы.
Кодировка символов
(Изображение из Википедии)
Когда вы печатаете что-то на клавиатуре или загружаете файл, как компьютер узнает, что отображать? Вот для чего нужна кодировка символов. Текст на вашем компьютере на самом деле не буквы, это набор парных буквенно-цифровых значений. Кодировка символов действует как ключ, для которого значения соответствуют каким символам, очень похоже на то, как орфография диктует, какие звуки соответствуют каким буквам. Азбука Морзе - это своего рода кодировка символов. Это объясняет, как группы длинных и коротких единиц, таких как гудки, представляют символы. В азбуке Морзе это всего лишь английские буквы, цифры и точки. Существует много компьютерных кодировок символов, которые переводят в буквы, цифры, знаки ударения, знаки пунктуации, международные символы и т. Д..
Часто по этой теме также используется термин «кодовые страницы». По сути, они представляют собой кодировки символов, используемые определенными компаниями, часто с небольшими изменениями. Например, кодовая страница Windows 1252 (ранее известная как ANSI 1252) является модифицированной формой ISO-8859-1. Они в основном используются в качестве внутренней системы для обозначения стандартных и модифицированных кодировок символов, характерных для тех же систем. Раньше кодирование символов не было так важно, потому что компьютеры не общались друг с другом. Интернет становится все более популярным, а сетевое общение - обычным явлением, и мы становимся все более важными в нашей повседневной жизни, даже если мы этого не осознаем..
Много разных типов
(Изображение из Сары Сосиак)
Существует множество различных кодировок символов, и для этого есть множество причин. Какую кодировку вы выберете, зависит от ваших потребностей. Если вы общаетесь на русском языке, имеет смысл использовать кодировку символов, которая хорошо поддерживает кириллицу. Если вы общаетесь на корейском языке, то вам нужно что-то, что хорошо отражает хангыль и ханджу. Если вы математик, то вам нужно что-то, что хорошо отображает все научные и математические символы, а также греческие и латинские глифы. Если вы шутник, возможно, вам пригодится перевернутый текст. И, если вы хотите, чтобы все эти типы документов просматривались каким-либо конкретным человеком, вам нужна довольно распространенная и легко доступная кодировка.
Давайте посмотрим на некоторые из наиболее распространенных.
(Выдержка из таблицы ASCII, изображение с asciitable.com)
- 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.org)
- 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 обеспечивает гораздо лучшую совместимость. Это также работает очень хорошо для людей, которые используют правильные знаки препинания, математические символы или символы не по манере, такие как квадраты и флажки.
(Несколько языков в одном документе, снимок экрана gujaratsamachar.com)
Однако у каждого сета есть свои недостатки. ASCII ограничен в знаках препинания, поэтому он не очень хорошо работает для типографски правильных правок. Когда-нибудь набирали текст / копировать из Word только для того, чтобы получить какую-то странную комбинацию символов? Это недостаток ISO-8859 или, точнее, его предполагаемая совместимость со специфическими для ОС кодовыми страницами (мы смотрим на вас, Microsoft!). Основным недостатком UTF-8 является отсутствие надлежащей поддержки в редактировании и публикации приложений. Другая проблема заключается в том, что браузеры часто не интерпретируют и просто отображают метку порядка байтов в кодировке UTF-8. Это приводит к отображению нежелательных глифов. И, конечно же, объявление одной кодировки и использование символов из другой без объявления / ссылки на них должным образом на веб-странице затрудняет браузерам их правильное отображение и поисковым системам соответствующим образом их индексируют..
Для своих собственных документов, рукописей и т. Д. Вы можете использовать все, что вам нужно для выполнения работы. Что касается Интернета, то, похоже, большинство людей согласны с использованием версии UTF-8, в которой не используется знак порядка следования байтов, но это не является единодушным. Как видите, у каждой кодировки символов есть свое использование, контекст, сильные и слабые стороны. Как конечный пользователь, вам, вероятно, не придется иметь дело с этим, но теперь вы можете сделать дополнительный шаг вперед, если вы решите.