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

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

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





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

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





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





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

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

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



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

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





Размер

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

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





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

Место хранения

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

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

как проверить номер imei в iphone
$ echo -n 'Hello, world' > foo

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

$ file foo
foo: ASCII text, with no line terminators

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

$ stat -f%z foo
12

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

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

$ echo -n '€' > foo
$ file foo
foo: UTF-8 Unicode text, with no line terminators
$ 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.

как сохранить мои фото в instagram

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

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

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

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

Связанный: Объяснение 100 самых популярных эмодзи

ASCII против Unicode

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

Делиться Делиться Твитнуть Эл. адрес Что такое текст ASCII и как он используется?

Текст ASCII кажется загадочным, но он широко используется в Интернете.

Читать далее
Похожие темы
  • Объяснение технологии
  • Смайлики
  • Жаргон
  • Веб-культура
  • Юникод
Об авторе Бобби Джек(Опубликовано 58 статей)

Бобби - энтузиаст технологий, проработавший разработчиком программного обеспечения большую часть двух десятилетий. Он увлечен играми, работает редактором обзоров в Switch Player Magazine и занимается всеми аспектами онлайн-публикации и веб-разработки.

Ещё от Bobby Jack

Подписывайтесь на нашу новостную рассылку

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

Нажмите здесь, чтобы подписаться