ASCII och Unicode är båda standarder som hänvisar till den digitala representationen av text, speciellt tecken som utgör text. De två standarderna skiljer sig emellertid väsentligt, med många egenskaper som återspeglar deras respektive skapande ordning.

Amerika mot universum

Den amerikanska standardkoden för informationsutbyte (ASCII) riktar sig förvånansvärt till en amerikansk publik och skriver i det engelska alfabetet. Den behandlar bokstäver utan accenter, som A-Z och a-z, plus ett litet antal skiljetecken och kontrolltecken.

I synnerhet finns det inget sätt att representera lånord som antagits från andra språk, t.ex. Kafé i ASCII, utan att anglicera dem genom att ersätta tecken med accent (t.ex. Kafé). Lokaliserade ASCII-tillägg utvecklades för att tillgodose olika språkbehov, men dessa ansträngningar gjorde interoperabilitet besvärligt och sträckte tydligt ASCII: s kapacitet.

Däremot ligger Universal Coded Character Set (Unicode) i motsatta änden av ambitionsskalan. Unicode försöker tillgodose så många av världens skrivsystem som möjligt, i den mån det täcker gamla språk och allas favorituppsättning av uttrycksfulla symboler, emoji.

instagram viewer

Teckenuppsättning eller teckenkodning?

Enkelt uttryckt är ett teckenuppsättning ett urval av tecken (t.ex. A-Z) medan ett tecken kodning är en mappning mellan en teckenuppsättning och ett värde som kan representeras digitalt (t.ex. A = 1, B = 2).

ASCII-standarden är effektivt båda: den definierar uppsättningen tecken som den representerar och en metod för att mappa varje tecken till ett numeriskt värde.

Däremot används ordet Unicode i flera olika sammanhang för att betyda olika saker. Du kan tänka på det som en allomfattande term, som ASCII, för att hänvisa till en teckenuppsättning och ett antal kodningar. Men eftersom det finns flera kodningar används termen Unicode ofta för att hänvisa till den totala uppsättningen tecken snarare än hur de mappas.

Storlek

På grund av dess omfattning representerar Unicode mycket fler tecken än ASCII. Standard ASCII använder ett 7-bitarsintervall för att koda 128 distinkta tecken. Unicode, å andra sidan, är så stort att vi behöver använda annan terminologi bara för att prata om det!

Unicode vänder sig till 1111998 adresserbara kodpunkter. En kodpunkt är ungefär analog med ett utrymme reserverat för en karaktär, men situationen är mycket mer komplicerad än när du börjar gräva i detaljerna!

En mer användbar jämförelse är hur många skript (eller skrivsystem) som stöds för närvarande. Naturligtvis hanterar ASCII bara det engelska alfabetet, i huvudsak det latinska eller romerska skriften. Den version av Unicode som producerades 2020 går mycket längre: den innehåller stöd för totalt 154 skript.

Lagring

ASCII: s 7-bitarsintervall innebär att varje tecken lagras i en enda 8-bitars byte; reservbiten är oanvänd i standard ASCII. Detta gör storleksberäkningar triviala: längden på texten, i tecken, är filens storlek i byte.

Du kan bekräfta detta med följande sekvens av bash-kommandon. Först skapar vi en fil som innehåller 12 textbokstäver:

$ echo -n 'Hello, world'> foo

För att kontrollera att texten finns i ASCII-kodningen kan vi använda fil kommando:

$ file foo
foo: ASCII-text utan radterminatorer

Slutligen, för att få det exakta antalet byte som filen upptar använder vi statistik kommando:

$ stat -f% z foo
12

Eftersom Unicode-standarden behandlar ett mycket större antal tecken tar en Unicode-fil naturligtvis mer lagringsutrymme. Exakt hur mycket beror på kodningen.

Att upprepa samma uppsättning kommandon från tidigare med ett tecken som inte kan representeras i ASCII ger följande:

$ echo -n '€'> foo
$ file foo
foo: UTF-8 Unicode-text, utan radterminatorer
$ stat -f% z foo
3

Det enda tecknet upptar 3 byte i en Unicode-fil. Observera att bash automatiskt skapade en UTF-8-fil eftersom en ASCII-fil inte kan lagra det valda tecknet (€). UTF-8 är den absolut vanligaste teckenkodningen för Unicode; UTF-16 och UTF-32 är två alternativa kodningar, men de används mycket mindre.

UTF-8 är en kodning med variabel bredd, vilket innebär att den använder olika mängder lagring för olika kodpunkter. Varje kodpunkt upptar mellan en och fyra byte, med avsikten att mer vanliga tecken kräver mindre utrymme, vilket ger en typ av inbyggd komprimering. Nackdelen är att det blir mycket mer komplicerat att bestämma längd- eller storlekskraven för en viss bit text.

ASCII är Unicode, men Unicode är inte ASCII

För bakåtkompatibilitet representerar de första 128 Unicode-kodpunkterna motsvarande ASCII-tecken. Eftersom UTF-8 kodar vart och ett av dessa tecken med en enda byte är vilken ASCII-text som helst också en UTF-8-text. Unicode är ett superset av ASCII.

Men som visas ovan kan många Unicode-filer inte användas i ASCII-sammanhang. Alla tecken som är utanför gränserna visas på ett oväntat sätt, ofta med ersatta tecken som är helt annorlunda än de som var avsedda.

Modern användning

För de flesta ändamål anses ASCII till stor del vara en äldre standard. Även i situationer som bara stöder det latinska skriptet - där fullt stöd för Unicodes komplexitet är onödigt, till exempel — det är vanligtvis bekvämare att använda UTF-8 och dra nytta av dess ASCII kompatibilitet.

I synnerhet bör webbsidor sparas och överföras med UTF-8, vilket är standard för HTML5. Detta står i kontrast till den tidigare webben, som behandlades i ASCII som standard innan den ersattes av Latin 1.

En standard som förändras

Den senaste revideringen av ASCII ägde rum 1986.

Däremot fortsätter Unicode att uppdateras årligen. Nya manus, karaktärer och särskilt nya emoji läggs regelbundet till. Med bara en liten bråkdel av dessa tilldelas sannolikt hela karaktärsuppsättningen att växa och växa under överskådlig framtid.

Relaterad: De 100 mest populära emojierna förklarade

De 100 mest populära emojierna förklarade

Det finns så många emojier att det kan vara svårt att veta vad de alla betyder. Här är de mest populära emojierna förklarade.

ASCII kontra Unicode

ASCII tjänade sitt syfte i många decennier, men Unicode har nu effektivt ersatt det för alla andra praktiska ändamål än äldre system. Unicode är större och därmed mer uttrycksfull. Det representerar ett världsomspännande samarbete och erbjuder mycket större flexibilitet, om än på bekostnad av viss komplexitet.

E-post
Vad är ASCII-text och hur används den?

ASCII-texten verkar kryptisk, men den har många användningsområden på internet.

Relaterade ämnen
  • Teknik förklaras
  • Emojis
  • Jargong
  • Webbkultur
  • Unicode
Om författaren
Bobby Jack (23 artiklar publicerade)

Bobby är en teknikentusiast som arbetat som programutvecklare under mer än två decennier. Han brinner för spel, arbetar som Recensentredaktör på Switch Player Magazine och är nedsänkt i alla aspekter av onlinepublicering och webbutveckling.

Mer från Bobby Jack

Prenumerera på vårt nyhetsbrev

Gå med i vårt nyhetsbrev för tekniska tips, recensioner, gratis e-böcker och exklusiva erbjudanden!

Ett steg till…!

Bekräfta din e-postadress i e-postmeddelandet som vi just skickade till dig.

.