Quina diferència hi ha entre text ASCII i Unicode?

Quina diferència hi ha entre text ASCII i Unicode?

ASCII i Unicode són ambdós estàndards que fan referència a la representació digital del text, concretament als caràcters que componen el text. No obstant això, els dos estàndards són significativament diferents, amb moltes propietats que reflecteixen el seu respectiu ordre de creació.





Amèrica contra l'univers

No és sorprenent que el codi estàndard americà per a l’intercanvi d’informació (ASCII) s’adapti a un públic nord-americà que escriu en alfabet anglès. Tracta de lletres sense accent, com ara A-Z i a-z, a més d’un petit nombre de símbols de puntuació i caràcters de control.





En particular, no hi ha cap manera de representar les paraules de préstec adoptades d'altres idiomes, com ara cafè a ASCII, sense anglicitzar-los substituint caràcters accentuats (per exemple, cafè ). Les extensions ASCII localitzades es van desenvolupar per atendre les necessitats de diversos idiomes, però aquests esforços van fer incòmoda la interoperabilitat i clarament estenien les capacitats d’ASCII.





En canvi, el joc de caràcters codificat universal (Unicode) es troba a l'extrem oposat de l'escala d'ambició. Unicode intenta atendre el major nombre possible de sistemes d’escriptura del món, en la mesura que cobreix idiomes antics i el conjunt preferit de símbols expressius de tots, els emoji.

Conjunt de caràcters o codificació de caràcters?

En termes senzills, un conjunt de caràcters és una selecció de caràcters (per exemple, A-Z), mentre que la codificació de caràcters és un mapatge entre un conjunt de caràcters i un valor que es pot representar digitalment (per exemple, A = 1, B = 2).



L'estàndard ASCII és efectivament ambdós: defineix el conjunt de caràcters que representa i un mètode per assignar cada caràcter a un valor numèric.

En canvi, la paraula Unicode s’utilitza en diversos contextos diferents per significar coses diferents. Podeu considerar-ho com un terme que inclou tot, com ara ASCII, per referir-vos a un conjunt de caràcters i a diverses codificacions. Però, com que hi ha diverses codificacions, el terme Unicode s'utilitza sovint per referir-se al conjunt general de caràcters, en lloc de com es mapen.





Mida

A causa del seu abast, Unicode representa molts més caràcters que ASCII. L'ASCII estàndard utilitza un interval de 7 bits per codificar 128 diferents personatges . Unicode, en canvi, és tan gran que hem d’utilitzar una terminologia diferent només per parlar-ne.

Unicode atén 1.111.998 adreçables punts de codi. Un punt de codi és aproximadament anàleg a un espai reservat a un personatge, però la situació és molt més complicada que quan comenceu a aprofundir en els detalls.





Una comparació més útil és la quantitat d’escriptures (o sistemes d’escriptura) que s’admeten actualment. Per descomptat, ASCII només maneja l’alfabet anglès, essencialment l’escriptura llatina o romana. La versió d’Unicode produïda el 2020 va molt més enllà: inclou suport per a un total de 154 scripts.

Emmagatzematge

L’interval de 7 bits d’ASCII significa que cada caràcter s’emmagatzema en un sol byte de 8 bits; el bit de recanvi no s'utilitza a l'ASCII estàndard. Això fa que els càlculs de mida siguin trivials: la longitud del text, en caràcters, és la mida del fitxer en bytes.

Podeu confirmar-ho amb la següent seqüència d'ordres bash. En primer lloc, creem un fitxer que conté 12 lletres de text:

jocs per jugar a la televisió amb el telèfon
$ echo -n 'Hello, world' > foo

Per comprovar que el text es troba a la codificació ASCII, podem utilitzar el fitxer dossier comandament:

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

Finalment, per obtenir el nombre exacte de bytes que ocupa el fitxer, fem servir el fitxer estat comandament:

$ stat -f%z foo
12

Atès que l'estàndard Unicode tracta un rang de caràcters molt més gran, un fitxer Unicode ocupa naturalment més espai d'emmagatzematge. Quant depèn exactament de la codificació.

Repetint el mateix conjunt d’ordres d’abans, utilitzant un caràcter que no es pot representar en ASCII, es dóna el següent:

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

Aquest caràcter ocupa 3 bytes en un fitxer Unicode. Tingueu en compte que bash ha creat automàticament un fitxer UTF-8, ja que un fitxer ASCII no pot emmagatzemar el caràcter escollit (€). UTF-8 és, amb diferència, la codificació de caràcters més comuna per a Unicode; UTF-16 i UTF-32 són dues codificacions alternatives, però s’utilitzen molt menys.

UTF-8 és una codificació d'amplada variable, el que significa que utilitza diferents quantitats d'emmagatzematge per a diferents punts de codi. Cada punt de codi ocuparà entre un i quatre bytes, amb la intenció que els caràcters més comuns requereixin menys espai, proporcionant un tipus de compressió integrada. L’inconvenient és que determinar els requisits de longitud o mida d’un fragment de text determinat es fa molt més complicat.

ASCII és Unicode, però Unicode no és ASCII

Per a una compatibilitat posterior, els primers 128 punts de codi Unicode representen els caràcters ASCII equivalents. Com que UTF-8 codifica cadascun d’aquests caràcters amb un sol byte, qualsevol text ASCII també és un text UTF-8. Unicode és un superconjunt d'ASCII.

Tanmateix, com es mostra més amunt, molts fitxers Unicode no es poden utilitzar en un context ASCII. Qualsevol caràcter que estigui fora dels límits es mostrarà de manera inesperada, sovint amb caràcters substituïts que són completament diferents dels que es pretenien.

Ús modern

Per a la majoria dels propòsits, ASCII es considera en gran mesura un estàndard heretat. Fins i tot en situacions que només admeten l’escriptura llatina, on el suport complet de les complexitats d’Unicode no és necessari, per exemple, sol ser més convenient utilitzar UTF-8 i aprofitar la seva compatibilitat ASCII.

com recuperar el meu compte de Facebook a través dels amics

En particular, les pàgines web s'han de desar i transmetre mitjançant UTF-8, que és el valor predeterminat per a HTML5. Això contrasta amb el web anterior, que tractava ASCII per defecte abans que el Latin 1 el substituís.

Un estàndard que canvia

La darrera revisió d'ASCII es va fer el 1986.

En canvi, Unicode continua actualitzant-se cada any. S’afegeixen nous scripts, personatges i, especialment, nous emoji. Amb només una petita fracció d’aquests assignats, és probable que el conjunt de caràcters creixi i creixi en un futur previsible.

Relacionat: Els 100 emojis més populars explicats

ASCII Versus Unicode

ASCII va complir el seu propòsit durant moltes dècades, però Unicode l'ha substituït eficaçment per a tots els propòsits pràctics que no siguin els sistemes heretats. Unicode és més gran i, per tant, és més expressiu. Representa un esforç col·laboratiu a nivell mundial i ofereix una flexibilitat molt més gran, tot i que a costa de certa complexitat.

Compartir Compartir Tweet Correu electrònic Què és el text ASCII i com s'utilitza?

El text ASCII sembla críptic, però té molts usos a Internet.

Llegiu a continuació
Temes relacionats
  • Tecnologia explicada
  • Emojis
  • Argot
  • Cultura web
  • Unicode
Sobre l'autor Bobby Jack(58 articles publicats)

Bobby és un entusiasta de la tecnologia que va treballar com a desenvolupador de programari durant gairebé dues dècades. És un apassionat dels jocs, treballa com a editor de ressenyes a Switch Player Magazine i està immers en tots els aspectes de la publicació en línia i el desenvolupament web.

Més de Bobby Jack

Subscriu-te al nostre butlletí

Uniu-vos al nostre butlletí per obtenir consells tècnics, ressenyes, llibres electrònics gratuïts i ofertes exclusives.

Feu clic aquí per subscriure-us