ASCII i Unicode to standardy odnoszące się do cyfrowej reprezentacji tekstu, w szczególności znaków tworzących tekst. Jednak te dwa standardy są znacząco różne, a wiele właściwości odzwierciedla ich odpowiednią kolejność tworzenia.

Ameryka kontra wszechświat

Nie jest zaskoczeniem, że American Standard Code for Information Interchange (ASCII) jest przeznaczony dla amerykańskiej publiczności, piszącej w alfabecie angielskim. Zajmuje się literami bez akcentu, takimi jak A-Z i a-z, a także niewielką liczbą symboli interpunkcyjnych i znaków sterujących.

W szczególności nie ma sposobu na przedstawienie słów zapożyczonych z innych języków, takich jak kawiarnia w ASCII, bez anglicyzowania ich przez podstawianie znaków akcentowanych (np. kawiarnia). Zlokalizowane rozszerzenia ASCII zostały opracowane w celu zaspokojenia potrzeb różnych języków, ale te wysiłki utrudniły współdziałanie i wyraźnie rozciągnęły możliwości ASCII.

Natomiast Universal Coded Character Set (Unicode) znajduje się na drugim końcu skali ambicji. Unicode stara się obsłużyć jak najwięcej światowych systemów pisma, w takim stopniu, w jakim obejmuje starożytne języki i ulubiony przez wszystkich zestaw ekspresyjnych symboli, emoji.

instagram viewer

Zestaw znaków czy kodowanie znaków?

Mówiąc najprościej, zestaw znaków to zestaw znaków (np. A-Z), podczas gdy znak kodowanie to odwzorowanie między zestawem znaków a wartością, którą można przedstawić cyfrowo (np. A = 1, B = 2).

Standard ASCII jest w rzeczywistości jednym i drugim: definiuje zestaw znaków, które reprezentuje, oraz metodę odwzorowywania każdego znaku na wartość liczbową.

W przeciwieństwie do tego, słowo Unicode jest używane w kilku różnych kontekstach na oznaczenie różnych rzeczy. Można go traktować jako termin obejmujący wszystko, jak ASCII, odnoszący się do zestawu znaków i pewnej liczby kodowań. Ale ponieważ istnieje kilka kodowań, termin Unicode jest często używany w odniesieniu do ogólnego zestawu znaków, a nie do sposobu, w jaki są one mapowane.

Rozmiar

Ze względu na swój zakres Unicode reprezentuje znacznie więcej znaków niż ASCII. Standardowy ASCII używa 7-bitowego zakresu do kodowania 128 różnych postacie. Z drugiej strony, Unicode jest tak duży, że musimy używać innej terminologii, aby o tym porozmawiać!

Unicode obsługuje 1,111,998 adresowalnych punkty kodowe. Punkt kodowy jest z grubsza analogiczny do miejsca zarezerwowanego dla znaku, ale sytuacja jest o wiele bardziej skomplikowana niż ta, gdy zaczynasz zagłębiać się w szczegóły!

Bardziej przydatnym porównaniem jest liczba aktualnie obsługiwanych skryptów (lub systemów pisania). Oczywiście ASCII obsługuje tylko alfabet angielski, zasadniczo alfabet łaciński lub łaciński. Wersja Unicode wyprodukowana w 2020 roku idzie znacznie dalej: obejmuje obsługę łącznie 154 skryptów.

Przechowywanie

7-bitowy zakres ASCII oznacza, że ​​każdy znak jest przechowywany w pojedynczym 8-bitowym bajcie; zapasowy bit jest nieużywany w standardowym ASCII. To sprawia, że ​​obliczenia rozmiaru są banalne: długość tekstu wyrażona w znakach to rozmiar pliku w bajtach.

Możesz to potwierdzić za pomocą następującej sekwencji poleceń bash. Najpierw tworzymy plik zawierający 12 liter tekstu:

$ echo -n 'Witaj świecie'> foo

Aby sprawdzić, czy tekst jest zakodowany w ASCII, możemy użyć rozszerzenia plik Komenda:

$ file foo
foo: tekst ASCII, bez terminatorów linii

Na koniec, aby uzyskać dokładną liczbę bajtów zajmowanych przez plik, używamy rozszerzenia stat Komenda:

$ stat -f% z foo
12

Ponieważ standard Unicode obsługuje znacznie większy zakres znaków, plik Unicode w naturalny sposób zajmuje więcej miejsca. Dokładnie ile zależy od kodowania.

Powtórzenie tego samego zestawu poleceń z poprzedniego, przy użyciu znaku, którego nie można przedstawić w ASCII, daje następujące efekty:

$ echo -n '€'> foo
$ file foo
foo: tekst Unicode UTF-8, bez terminatorów linii
$ stat -f% z foo
3

Ten pojedynczy znak zajmuje 3 bajty w pliku Unicode. Zwróć uwagę, że bash automatycznie utworzył plik UTF-8, ponieważ plik ASCII nie może przechowywać wybranego znaku (€). UTF-8 jest zdecydowanie najpopularniejszym kodowaniem znaków dla Unicode; UTF-16 i UTF-32 to dwa alternatywne kodowania, ale są one używane znacznie rzadziej.

UTF-8 to kodowanie o zmiennej szerokości, co oznacza, że ​​wykorzystuje różne ilości pamięci dla różnych punktów kodowych. Każdy punkt kodowy zajmie od jednego do czterech bajtów, z zamiarem, aby bardziej popularne znaki zajmowały mniej miejsca, zapewniając rodzaj wbudowanej kompresji. Wadą jest to, że określenie wymagań dotyczących długości lub rozmiaru danego fragmentu tekstu staje się znacznie bardziej skomplikowane.

ASCII to Unicode, ale Unicode to nie ASCII

Aby zapewnić kompatybilność wsteczną, pierwsze 128 punktów kodowych Unicode reprezentuje równoważne znaki ASCII. Ponieważ UTF-8 koduje każdy z tych znaków jednym bajtem, każdy tekst ASCII jest również tekstem UTF-8. Unicode to nadzbiór ASCII.

Jednak, jak pokazano powyżej, wielu plików Unicode nie można używać w kontekście ASCII. Każdy znak, który jest poza granicami, zostanie wyświetlony w nieoczekiwany sposób, często z podstawionymi znakami, które są zupełnie inne niż te, które były zamierzone.

Nowoczesne wykorzystanie

W większości przypadków ASCII jest w dużej mierze uważany za starszy standard. Nawet w sytuacjach, które obsługują tylko alfabet łaciński - gdzie jest pełne wsparcie dla złożoności Unicode niepotrzebne, na przykład - zwykle wygodniej jest używać UTF-8 i korzystać z jego ASCII zgodność.

W szczególności strony internetowe powinny być zapisywane i przesyłane przy użyciu UTF-8, który jest domyślnym dla HTML5. Jest to w przeciwieństwie do wcześniejszej sieci, która domyślnie zajmowała się ASCII, zanim została zastąpiona przez Latin 1.

Standard, który się zmienia

Ostatnia wersja ASCII miała miejsce w 1986 roku.

Natomiast Unicode jest nadal aktualizowany co roku. Regularnie dodawane są nowe skrypty, postacie, a zwłaszcza nowe emotikony. Przy tylko niewielkim ułamku z tych przydzielonych, cały zestaw znaków prawdopodobnie będzie się powiększał i rozrastał w dającej się przewidzieć przyszłości.

Związane z: Wyjaśnienie 100 najpopularniejszych emotikonów

Wyjaśnienie 100 najpopularniejszych emotikonów

Jest tak wiele emoji, że może być trudno wiedzieć, co one oznaczają. Oto wyjaśnienie najpopularniejszych emotikonów.

ASCII a Unicode

ASCII służyło swojemu celowi przez wiele dziesięcioleci, ale Unicode skutecznie zastąpił go teraz we wszystkich praktycznych celach innych niż starsze systemy. Unicode jest większy, a przez to bardziej wyrazisty. Stanowi ogólnoświatowy, wspólny wysiłek i oferuje znacznie większą elastyczność, aczkolwiek kosztem pewnej złożoności.

E-mail
Co to jest tekst ASCII i jak jest używany?

Tekst ASCII wydaje się tajemniczy, ale ma wiele zastosowań w Internecie.

Powiązane tematy
  • Technologia wyjaśniona
  • Emoji
  • Żargon
  • Kultura sieciowa
  • Unicode
O autorze
Bobby Jack (23 opublikowane artykuły)

Bobby jest entuzjastą technologii, który przez prawie dwie dekady pracował jako programista. Pasjonuje się grami, pracuje jako redaktor recenzji w Switch Player Magazine i jest pochłonięty wszystkimi aspektami publikowania i tworzenia stron internetowych.

Więcej od Bobby'ego Jacka

Zapisz się do naszego newslettera

Dołącz do naszego biuletynu, aby otrzymywać wskazówki techniczne, recenzje, bezpłatne e-booki i ekskluzywne oferty!

Jeszcze jeden krok…!

Potwierdź swój adres e-mail w wiadomości e-mail, którą właśnie wysłaliśmy.

.