В чем разница между текстом ASCII и Unicode?

ASCII и Unicode – это стандарты, которые относятся к цифровому представлению текста, в частности символов, составляющих текст. Однако эти два стандарта существенно различаются, и многие свойства отражают их соответствующий порядок создания.

Америка против Вселенной

Американский стандартный код обмена информацией (ASCII), что неудивительно, обслуживает американскую аудиторию, пишущую английским алфавитом. Он работает с безударными буквами, такими как A-Z и a-z, а также с небольшим количеством знаков препинания и управляющих символов.

В частности, нет способа представления заимствованных слов заимствовано из других языков, таких как cafe в ASCII, без преобразования их в английский язык путем замены символов с диакритическими знаками (например, cafe ). Локализованные расширения ASCII были разработаны для удовлетворения потребностей различных языков, но эти усилия затрудняли совместимость и явно ограничивали возможности ASCII.

Напротив, универсальный кодированный набор символов (Unicode) находится на противоположном конце шкалы амбиций. Unicode пытается удовлетворить как можно больше мировых систем письма, поскольку он охватывает древние языки и всеми любимый набор выразительных символов – эмодзи.

Набор символов или кодировка символов?

Проще говоря, набор символов – это набор символов (например, AZ), в то время как кодировка символов – это отображение между набором символов и значением которые могут быть представлены в цифровом виде (например, A = 1, B = 2).

Стандарт ASCII фактически является одновременно и: он определяет набор символов, которые он представляет, и метод сопоставления каждого символа с числовым значением.

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

Размер

Из-за его объема , Unicode представляет гораздо больше символов, чем ASCII. Стандартный ASCII использует 7-битный диапазон для кодирования 128 различных символов .. Юникод, с другой стороны, настолько велик, что нам нужно использовать другую терминологию, чтобы говорить об этом!

Unicode обслуживает 1 1111998 адресуемых кодовых точек. Кодовая точка примерно аналогична на место, зарезервированное для персонажа, но ситуация намного сложнее, чем когда вы начинаете вникать в детали!

Более полезное сравнение – количество скриптов (или систем записи), поддерживаемых в настоящее время. Конечно, ASCII обрабатывает только английский алфавит, в основном латинский или латинский алфавит. Версия Unicode, выпущенная в 2020 году, идет намного дальше: она включает в себя поддержку 154 скриптов.

Хранение

7-битный диапазон ASCII означает, что каждый символ хранится в одном 8-битном байте; запасной бит не используется в стандартном ASCII. Это упрощает расчет размера: длина текста в символах – это размер файла в байтах.

Вы можете подтвердить это с помощью следующей последовательности команд bash. Сначала мы создаем файл, содержащий 12 букв текста:

  $ echo -n 'Hello  , world '> foo  

Чтобы проверить, что текст находится в кодировке ASCII, мы можем использовать команду file :

  $ file foo 
foo: текст ASCII без разделителей строк

Наконец, чтобы получить точное количество байтов в файле занимает, мы используем команду stat :

  $ stat -f% z foo 
12

Поскольку стандарт Unicode имеет дело с гораздо большим диапазоном символов, файл Unicode, естественно, занимает больше места для хранения. Сколько именно зависит от кодировки.

Повторение того же набора команд, что и раньше, с использованием символа, который не может быть представлен в ASCII, дает следующее:

  $ echo -n  '€'> foo 
$ file foo
foo: текст Unicode UTF-8 без разделителей строки
$ stat -f% z foo
3

Этот единственный символ занимает 3 байта в файле Unicode. Обратите внимание, что bash автоматически создал файл UTF-8, поскольку файл ASCII не может хранить выбранный символ (€). UTF-8 на сегодняшний день является наиболее распространенной кодировкой символов для Unicode; UTF-16 и UTF-32 – две альтернативные кодировки, но они используются гораздо реже.

UTF-8 – это кодировка переменной ширины, что означает, что он использует разный объем памяти для разных кодовых точек. Каждая кодовая точка будет занимать от одного до четырех байтов с намерением, чтобы более общие символы занимали меньше места, обеспечивая тип встроенного сжатия. Недостатком является то, что определение требований к длине или размеру данного фрагмента текста становится намного более сложным..

ASCII – это Unicode, но Unicode – это не ASCII

Для обратной совместимости первые 128 кодовых точек Unicode представляют эквивалентные символы ASCII. Поскольку UTF-8 кодирует каждый из этих символов одним байтом, любой текст ASCII также является текстом UTF-8. Юникод – это надмножество ASCII.

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

Современное использование

В большинстве случаев ASCII считается устаревшим стандартом. Даже в тех случаях, когда поддерживается только латинский алфавит – например, когда полная поддержка сложностей Unicode не требуется – обычно удобнее использовать UTF-8 и воспользоваться преимуществами его совместимости с ASCII.

В частности, веб-страницы должны сохраняться и передаваться с использованием UTF-8, который используется по умолчанию для HTML5. Это отличается от более ранней сети, в которой по умолчанию использовался ASCII, прежде чем он был заменен на Latin 1.

Стандарт, который меняется

Последняя редакция ASCII состоялась в 1986 году.

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

По теме: объяснение 100 самых популярных эмодзи

ASCII по сравнению с Unicode

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

Оцените статью
futurei.ru
Добавить комментарий