ASCII и Unicode са и двата стандарта, които се отнасят до цифровото представяне на текст, по-специално символи, съставляващи текст. Двата стандарта обаче се различават значително, като много свойства отразяват съответния им ред на създаване.

Америка срещу Вселената

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

По-специално, няма начин да се представят заемни думи, приети от други езици, като например кафене в ASCII, без да ги англицизира, като замества ударени символи (напр. кафене). Локализираните разширения ASCII бяха разработени, за да отговорят на нуждите на различни езици, но тези усилия направиха оперативната съвместимост неудобна и явно разшириха възможностите на ASCII.

За разлика от това универсалният кодиран набор от символи (Unicode) лежи в противоположния край на скалата за амбиции. Unicode се опитва да обслужва колкото се може повече от писмените системи в света, доколкото обхваща древни езици и любимия на всички експресивни символи, емотикони.

instagram viewer

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

С прости думи, набор от символи е селекция от символи (напр. A-Z), докато знак кодирането е преобразуване между набор от знаци и стойност, която може да бъде представена цифрово (напр. A = 1, B = 2).

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

За разлика от това, думата Unicode се използва в няколко различни контекста, за да означава различни неща. Можете да го възприемате като всеобхватен термин, като ASCII, за да се позовавате на набор от символи и редица кодировки. Но тъй като има няколко кодирания, терминът Unicode често се използва за обозначаване на общия набор от знаци, а не как те се картографират.

Размер

Поради обхвата си, Unicode представлява много повече символи от ASCII. Стандартният ASCII използва 7-битов диапазон за кодиране на 128 различни знаци. Unicode, от друга страна, е толкова голям, че трябва да използваме различна терминология, само за да говорим за това!

Unicode обслужва 1,111,998 адресируеми кодови точки. Кодовата точка е приблизително аналогична на пространство, запазено за герой, но ситуацията е много по-сложна от тази, когато започнете да задълбавате в детайлите!

По-полезно сравнение е колко скриптове (или системи за писане) се поддържат в момента. Разбира се, ASCII обработва само английската азбука, по същество латинската или римската писменост. Версията на Unicode, произведена през 2020 г., отива много по-далеч: включва поддръжка за общо 154 скрипта.

Съхранение

7-битовият диапазон на ASCII означава, че всеки символ се съхранява в един 8-битов байт; резервният бит не се използва в стандартния ASCII. Това прави изчисленията на размера тривиални: дължината на текста в символи е размерът на файла в байтове.

Можете да потвърдите това със следната последователност от команди bash. Първо, ние създаваме файл, съдържащ 12 букви текст:

$ echo -n 'Здравей, свят'> foo

За да проверим дали текстът е в ASCII кодиране, можем да използваме файл команда:

$ файл foo
foo: ASCII текст, без ограничители на редове

И накрая, за да получим точния брой байтове, които файлът заема, използваме статистика команда:

$ stat -f% z foo
12

Тъй като стандартът на Unicode се занимава с много по-голям набор от символи, Unicode файлът естествено заема повече място за съхранение. Колко точно зависи от кодирането.

Повтарянето на същия набор от команди от преди, като се използва знак, който не може да бъде представен в ASCII, дава следното:

$ echo -n '€'> foo
$ файл foo
foo: UTF-8 Unicode текст, без редови терминатори
$ 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 текст. Unicode е надмножество на ASCII.

Както е показано по-горе обаче, много Unicode файлове не могат да се използват в контекст на ASCII. Всеки символ, който е извън границите, ще бъде показан по неочакван начин, често със заместени символи, които са напълно различни от предвидените.

Съвременна употреба

За повечето цели ASCII се счита до голяма степен за наследствен стандарт. Дори в ситуации, които поддържат само латинския шрифт - където е пълната подкрепа за сложността на Unicode например ненужно - обикновено е по-удобно да използвате UTF-8 и да се възползвате от неговия ASCII съвместимост.

По-специално, уеб страниците трябва да се запазват и предават с помощта на UTF-8, което е по подразбиране за HTML5. Това е за разлика от по-ранната мрежа, която по подразбиране се занимаваше с ASCII, преди това да бъде заменено от Latin 1.

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

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

За разлика от това, Unicode продължава да се актуализира ежегодно. Редовно се добавят нови скриптове, знаци и особено нови емотикони. Само с малка част от тях, пълният набор от символи вероятно ще расте и ще расте в обозримо бъдеще.

Свързани: 100-те най-популярни обяснени емоджи

100-те най-популярни обяснени емоджи

Има толкова много емотикони, че може да е трудно да разберем какво означават всички те. Тук са обяснени най-популярните емотикони.

ASCII срещу Unicode

ASCII изпълняваше своята цел в продължение на много десетилетия, но Unicode сега ефективно го замени за всички практически цели, различни от старите системи. Unicode е по-голям и следователно по-изразителен. Той представлява глобални усилия за съвместна работа и предлага много по-голяма гъвкавост, макар и за сметка на известна сложност.

електронна поща
Какво е ASCII текст и как се използва?

ASCII текстът изглежда загадъчен, но има много приложения в интернет.

Свързани теми
  • Обяснена технология
  • Emojis
  • Жаргон
  • Уеб култура
  • Unicode
За автора
Боби Джак (23 статии публикувани)

Боби е технологичен ентусиаст, който работи като разработчик на софтуер в продължение на почти две десетилетия. Той е запален по игрите, работи като редактор на рецензии в списание Switch Player и е потопен във всички аспекти на онлайн публикуването и уеб разработката.

Още от Боби Джак

Абонирайте се за нашия бюлетин

Присъединете се към нашия бюлетин за технически съвети, рецензии, безплатни електронни книги и ексклузивни оферти!

Още една стъпка…!

Моля, потвърдете имейл адреса си в имейла, който току-що ви изпратихме.

.