ASCII og Unicode er begge standarder som refererer til digital representasjon av tekst, spesielt tegn som utgjør tekst. Imidlertid er de to standardene betydelig forskjellige, med mange egenskaper som gjenspeiler deres respektive opprettelsesrekkefølge.
America Versus the Universe
Den amerikanske standardkoden for informasjonsutveksling (ASCII) henvender seg ikke overraskende til et amerikansk publikum og skriver i det engelske alfabetet. Den tar for seg bokstaver som ikke er aksenterte, slik som AZ og AZ, pluss et lite antall tegnsettingssymboler og kontrolltegn.
Spesielt er det ingen måte å representere låneord fra andre språk, for eksempel kafe i ASCII, uten å anglisisere dem ved å erstatte tegn med aksent (f.eks. kafe). Lokaliserte ASCII-utvidelser ble utviklet for å imøtekomme ulike språkers behov, men denne innsatsen gjorde interoperabilitet vanskelig og strakte tydelig ASCIIs evner.
I motsetning til dette ligger Universal Coded Character Set (Unicode) i motsatt ende av ambisjonsskalaen. Unicode prøver å imøtekomme så mange av verdens skriftsystemer som mulig, i den grad det dekker eldgamle språk og alles favoritt sett med uttrykksfulle symboler, emoji.
Tegnsett eller tegnkoding?
Enkelt sagt er et tegnsett et utvalg av tegn (for eksempel AZ) mens et tegn koding er en kartlegging mellom et tegnsett og en verdi som kan representeres digitalt (f.eks. A = 1, B = 2).
ASCII-standarden er effektivt begge deler: den definerer settet med tegn som den representerer og en metode for å kartlegge hvert tegn til en numerisk verdi.
I kontrast brukes ordet Unicode i flere forskjellige sammenhenger for å bety forskjellige ting. Du kan tenke på det som et altomfattende begrep, som ASCII, for å referere til et tegnsett og et antall kodinger. Men fordi det er flere kodinger, brukes begrepet Unicode ofte om det samlede settet med tegn, snarere enn hvordan de blir kartlagt.
Størrelse
På grunn av omfanget representerer Unicode langt flere tegn enn ASCII. Standard ASCII bruker et 7-bits område for å kode 128 forskjellige tegn. Unicode er derimot så stort at vi trenger å bruke annen terminologi bare for å snakke om det!
Unicode henvender seg til 1111998 adresserbare kodepunkter. Et kodepunkt er omtrent analogt med et område som er reservert for et tegn, men situasjonen er mye mer komplisert enn det når du begynner å fordype deg i detaljene!
En mer nyttig sammenligning er hvor mange skript (eller skrivesystemer) som støttes for øyeblikket. Selvfølgelig håndterer ASCII bare det engelske alfabetet, i det vesentlige det latinske eller romerske skriften. Versjonen av Unicode produsert i 2020 går mye lenger: den inkluderer støtte for totalt 154 skript.
Oppbevaring
ASCIIs 7-biters rekkevidde betyr at hvert tegn er lagret i en enkelt 8-biters byte; reservebiten er ubrukt i standard ASCII. Dette gjør størrelsesberegninger trivielle: lengden på teksten, i tegn, er filens størrelse i byte.
Du kan bekrefte dette med følgende sekvens med bash-kommandoer. Først oppretter vi en fil som inneholder 12 bokstaver tekst:
$ echo -n 'Hello, world'> foo
For å sjekke at teksten er i ASCII-kodingen, kan vi bruke fil kommando:
$ fil foo
foo: ASCII-tekst, uten linjeterminatorer
Til slutt, for å få nøyaktig antall byte filen opptar, bruker vi stat kommando:
$ stat -f% z foo
12
Siden Unicode-standarden tar for seg et langt større utvalg av tegn, tar en Unicode-fil naturlig mer lagringsplass. Nøyaktig hvor mye avhenger av kodingen.
Gjenta det samme settet med kommandoer fra før, ved hjelp av et tegn som ikke kan vises i ASCII, gir følgende:
$ echo -n '€'> foo
$ fil foo
foo: UTF-8 Unicode-tekst, uten linjeterminatorer
$ stat -f% z foo
3
Det eneste tegnet opptar 3 byte i en Unicode-fil. Merk at bash opprettet automatisk en UTF-8-fil siden en ASCII-fil ikke kan lagre det valgte tegnet (€). UTF-8 er den klart vanligste tegnkodingen for Unicode; UTF-16 og UTF-32 er to alternative kodinger, men de brukes langt mindre.
UTF-8 er en koding med variabel bredde, noe som betyr at den bruker forskjellige lagringsmengder for forskjellige kodepunkter. Hvert kodepunkt vil oppta mellom ett og fire byte, med den hensikt at vanligere tegn krever mindre plass, noe som gir en type innebygd komprimering. Ulempen er at det å bestemme lengde- eller størrelseskravene til en gitt del tekst blir mye mer komplisert.
ASCII er Unicode, men Unicode er ikke ASCII
For bakoverkompatibilitet representerer de første 128 Unicode-kodepunktene de tilsvarende ASCII-tegnene. Siden UTF-8 koder hvert av disse tegnene med en enkelt byte, er hvilken som helst ASCII-tekst også en UTF-8-tekst. Unicode er et supersett av ASCII.
Som vist ovenfor kan imidlertid mange Unicode-filer ikke brukes i en ASCII-kontekst. Ethvert tegn som er utenfor grensene vises på en uventet måte, ofte med substituerte tegn som er helt forskjellige fra de som var ment.
Moderne bruk
For de fleste formål anses ASCII i stor grad som en eldre standard. Selv i situasjoner som bare støtter det latinske skriftet - der full støtte for kompleksiteten til Unicode er unødvendig, for eksempel — det er vanligvis mer praktisk å bruke UTF-8 og dra nytte av ASCII-en kompatibilitet.
Spesielt bør websider lagres og overføres ved hjelp av UTF-8, som er standard for HTML5. Dette er i motsetning til det tidligere nettet, som behandlet ASCII som standard før det ble erstattet av Latin 1.
En standard som endrer seg
Den siste revisjonen av ASCII fant sted i 1986.
I kontrast fortsetter Unicode å bli oppdatert årlig. Nye skript, tegn og spesielt nye emoji blir jevnlig lagt til. Med bare en liten brøkdel av disse tildelt, vil hele tegnsettet trolig vokse og vokse i overskuelig fremtid.
I slekt: De 100 mest populære emojiene forklart
Det er så mange emojier, det kan være vanskelig å vite hva de alle mener. Her er de mest populære emojiene forklart.
ASCII Versus Unicode
ASCII tjente sitt formål i mange tiår, men Unicode har nå effektivt erstattet det for alle praktiske formål annet enn eldre systemer. Unicode er større og dermed mer uttrykksfull. Det representerer en verdensomspennende, samarbeidsinnsats og gir langt større fleksibilitet, om enn på bekostning av noe kompleksitet.
ASCII-tekst virker kryptisk, men den har mange bruksområder rundt internett.
- Teknologi forklart
- Emojis
- Sjargong
- Nettkultur
- Unicode
Bobby er en teknologientusiast som jobbet som programvareutvikler i det meste av to tiår. Han brenner for spill, jobber som Reviews Editor i Switch Player Magazine, og er oppslukt av alle aspekter av online publisering og nettutvikling.
Abonner på vårt nyhetsbrev
Bli med på nyhetsbrevet vårt for tekniske tips, anmeldelser, gratis e-bøker og eksklusive tilbud!
Ett steg til…!
Bekreft e-postadressen din i e-posten vi nettopp sendte deg.