Jaka jest różnica między tekstem ASCII a tekstem Unicode?

Jaka jest różnica między tekstem ASCII a tekstem Unicode?

ASCII i Unicode to oba standardy, które odnoszą się do cyfrowej reprezentacji tekstu, w szczególności znaków tworzących tekst. Jednak te dwa standardy znacznie się różnią, a wiele właściwości odzwierciedla ich kolejność tworzenia.





Ameryka kontra Wszechświat

Nic dziwnego, że American Standard Code for Information Interchange (ASCII) jest przeznaczony dla odbiorców amerykańskich, pisząc alfabetem angielskim. Zajmuje się literami bez akcentów, takimi jak A-Z i a-z, a także niewielką liczbą znaków 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 Kawa w ASCII, bez ich anglicyzacji przez zastąpienie znaków akcentowanych (np. kawiarnia ). Zlokalizowane rozszerzenia ASCII zostały opracowane w celu zaspokojenia potrzeb różnych języków, ale te wysiłki sprawiły, że interoperacyjność była niewygodna i wyraźnie rozszerzała możliwości ASCII.





W przeciwieństwie do tego, Universal Coded Character Set (Unicode) znajduje się na przeciwległym końcu skali ambicji. Unicode stara się zaspokoić jak najwięcej systemów pisma na świecie, do tego stopnia, że ​​obejmuje starożytne języki i ulubiony zestaw ekspresyjnych symboli, emoji.

Zestaw znaków czy kodowanie znaków?

Mówiąc prościej, zestaw znaków to wybór znaków (np. A-Z), podczas gdy kodowanie znaków 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 zarówno: definiuje zestaw znaków, które reprezentuje, jak i metodę mapowania każdego znaku na wartość liczbową.

Natomiast słowo Unicode jest używane w kilku różnych kontekstach, aby oznaczać różne rzeczy. Możesz myśleć o tym jako o wszechogarniającym terminie, takim jak ASCII, odnoszącym się do zestawu znaków i wielu kodowań. Ale ponieważ istnieje kilka kodowań, termin Unicode jest często używany w odniesieniu do całego zestawu znaków, a nie sposobu ich mapowania.





Rozmiar

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

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





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

Składowanie

7-bitowy zakres ASCII oznacza, że ​​każdy znak jest przechowywany w pojedynczym 8-bitowym bajcie; zapasowy bit nie jest używany w standardowym ASCII. To sprawia, że ​​obliczenia rozmiaru są trywialne: długość tekstu 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:

uruchom mac os na Windows 10
$ echo -n 'Hello, world' > foo

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

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

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

$ stat -f%z foo
12

Ponieważ standard Unicode zajmuje się znacznie większym zakresem znaków, plik Unicode naturalnie zajmuje więcej miejsca. Dokładnie ile zależy od kodowania.

Powtarzanie tego samego zestawu poleceń co wcześniej, przy użyciu znaku, którego nie można przedstawić w ASCII, daje następujące wyniki:

$ echo -n '€' > foo
$ file foo
foo: UTF-8 Unicode text, with no line terminators
$ stat -f%z foo
3

Ten pojedynczy znak zajmuje 3 bajty w pliku Unicode. Zauważ, że bash automatycznie utworzył plik UTF-8, ponieważ plik ASCII nie może przechowywać wybranego znaku (€). UTF-8 jest zdecydowanie najbardziej powszechnym 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 ​​używa różnych 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 wymagał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ć zgodność z poprzednimi wersjami, pierwsze 128 punktów kodowych Unicode reprezentują równoważne znaki ASCII. Ponieważ UTF-8 koduje każdy z tych znaków za pomocą jednego bajtu, 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 zastosowanie

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

robi to za darmo copypasta

W szczególności strony internetowe powinny być zapisywane i przesyłane przy użyciu UTF-8, który jest domyślny 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 rewizja ASCII miała miejsce w 1986 roku.

W przeciwieństwie do tego, Unicode jest aktualizowany co roku. Regularnie dodawane są nowe skrypty, postacie, a zwłaszcza nowe emoji. Mając tylko niewielką część tych przydzielonych, pełny zestaw znaków prawdopodobnie będzie rósł i rósł w dającej się przewidzieć przyszłości.

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

ASCII kontra Unicode

ASCII służył swojemu celowi przez wiele dziesięcioleci, ale Unicode skutecznie zastąpił go 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.

Udział Udział Ćwierkać E-mail Co to jest tekst ASCII i jak jest używany?

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

Czytaj dalej
Powiązane tematy
  • Wyjaśnienie technologii
  • Emoji
  • Żargon
  • Kultura internetowa
  • Unicode
O autorze Bobby Jack(58 opublikowanych artykułów)

Bobby jest entuzjastą technologii, który przez prawie dwie dekady pracował jako programista. Pasjonuje się grami, pracuje jako redaktor recenzji w magazynie Switch Player i jest zanurzony we wszystkich aspektach publikowania online i tworzenia stron internetowych.

Więcej od Bobby'ego Jacka

Zapisz się do naszego newslettera

Dołącz do naszego newslettera, aby otrzymywać porady techniczne, recenzje, bezpłatne e-booki i ekskluzywne oferty!

Kliknij tutaj, aby zasubskrybować