Wat is het verschil tussen ASCII- en Unicode-tekst?

Wat is het verschil tussen ASCII- en Unicode-tekst?

ASCII en Unicode zijn beide standaarden die verwijzen naar de digitale weergave van tekst, met name tekens waaruit tekst bestaat. De twee standaarden zijn echter aanzienlijk verschillend, met veel eigenschappen die hun respectieve volgorde van creatie weerspiegelen.





Amerika versus het heelal

Het is niet verwonderlijk dat de American Standard Code for Information Interchange (ASCII) geschikt is voor een Amerikaans publiek en schrijft in het Engelse alfabet. Het behandelt letters zonder accent, zoals A-Z en a-z, plus een klein aantal leestekens en controletekens.





Er is met name geen manier om leenwoorden weer te geven die zijn overgenomen uit andere talen, zoals: koffie in ASCII, zonder ze te verengelsen door tekens met accenten te vervangen (bijv. cafe ). Gelokaliseerde ASCII-extensies werden ontwikkeld om tegemoet te komen aan de behoeften van verschillende talen, maar deze inspanningen maakten de interoperabiliteit lastig en verruimden duidelijk de mogelijkheden van ASCII.





De Universal Coded Character Set (Unicode) daarentegen bevindt zich aan de andere kant van de ambitieschaal. Unicode probeert zoveel mogelijk van 's werelds schrijfsystemen te bedienen, voor zover het oude talen en ieders favoriete reeks expressieve symbolen, emoji, omvat.

Tekenset of tekencodering?

In eenvoudige bewoordingen is een tekenset een selectie van tekens (bijvoorbeeld A-Z), terwijl een tekencodering een afbeelding is tussen een tekenset en een waarde die digitaal kan worden weergegeven (bijvoorbeeld A=1, B=2).



De ASCII-standaard is in feite beide: het definieert de reeks tekens die het vertegenwoordigt en een methode om elk teken toe te wijzen aan een numerieke waarde.

Het woord Unicode wordt daarentegen in verschillende contexten gebruikt om verschillende dingen te betekenen. Je kunt het zien als een allesomvattende term, zoals ASCII, om te verwijzen naar een tekenset en een aantal coderingen. Maar omdat er verschillende coderingen zijn, wordt de term Unicode vaak gebruikt om te verwijzen naar de algemene set tekens, in plaats van hoe ze zijn toegewezen.





Maat

Vanwege zijn omvang vertegenwoordigt Unicode veel meer tekens dan ASCII. Standaard ASCII gebruikt een 7-bits bereik om 128 verschillende te coderen karakters . Unicode, aan de andere kant, is zo groot dat we verschillende terminologie moeten gebruiken om erover te praten!

Unicode is geschikt voor 1.111.998 adresseerbare code punten. Een codepunt is ruwweg analoog aan een ruimte gereserveerd voor een personage, maar de situatie is een stuk ingewikkelder dan wanneer je je in de details begint te verdiepen!





Een handiger vergelijking is hoeveel scripts (of schrijfsystemen) momenteel worden ondersteund. Natuurlijk verwerkt ASCII alleen het Engelse alfabet, in wezen het Latijnse of Romeinse schrift. De versie van Unicode die in 2020 is geproduceerd, gaat een stuk verder: het bevat ondersteuning voor in totaal 154 scripts.

Opslag

Het 7-bits bereik van ASCII betekent dat elk teken wordt opgeslagen in een enkele 8-bits byte; het reservebit is ongebruikt in standaard ASCII. Dit maakt het berekenen van de grootte triviaal: de lengte van de tekst, in tekens, is de grootte van het bestand in bytes.

U kunt dit bevestigen met de volgende reeks bash-commando's. Eerst maken we een bestand met 12 letters tekst:

hoe zet je een mac aan
$ echo -n 'Hello, world' > foo

Om te controleren of de tekst in de ASCII-codering staat, kunnen we de . gebruiken het dossier opdracht:

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

Ten slotte, om het exacte aantal bytes te krijgen dat het bestand in beslag neemt, gebruiken we de staat opdracht:

$ stat -f%z foo
12

Omdat de Unicode-standaard een veel groter aantal tekens behandelt, neemt een Unicode-bestand natuurlijk meer opslagruimte in beslag. Hoeveel precies hangt af van de codering.

Het herhalen van dezelfde reeks opdrachten van voorheen, met behulp van een teken dat niet kan worden weergegeven in ASCII, geeft het volgende:

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

Dat ene teken neemt 3 bytes in beslag in een Unicode-bestand. Merk op dat bash automatisch een UTF-8-bestand heeft gemaakt, aangezien een ASCII-bestand het gekozen teken (€) niet kan opslaan. UTF-8 is verreweg de meest voorkomende tekencodering voor Unicode; UTF-16 en UTF-32 zijn twee alternatieve coderingen, maar ze worden veel minder gebruikt.

UTF-8 is een codering met variabele breedte, wat betekent dat het verschillende hoeveelheden opslagruimte gebruikt voor verschillende codepunten. Elk codepunt zal tussen één en vier bytes in beslag nemen, met de bedoeling dat meer gebruikelijke tekens minder ruimte nodig hebben, wat een soort ingebouwde compressie oplevert. Het nadeel is dat het bepalen van de lengte- of groottevereisten van een bepaald stuk tekst veel gecompliceerder wordt.

ASCII is Unicode, maar Unicode is geen ASCII

Voor achterwaartse compatibiliteit vertegenwoordigen de eerste 128 Unicode-codepunten de equivalente ASCII-tekens. Aangezien UTF-8 elk van deze tekens codeert met een enkele byte, is elke ASCII-tekst ook een UTF-8-tekst. Unicode is een superset van ASCII.

Zoals hierboven weergegeven, kunnen veel Unicode-bestanden echter niet in een ASCII-context worden gebruikt. Elk teken dat buiten het bereik is, wordt op een onverwachte manier weergegeven, vaak met vervangende tekens die totaal anders zijn dan de bedoeling was.

Modern gebruik

Voor de meeste doeleinden wordt ASCII grotendeels beschouwd als een legacy-standaard. Zelfs in situaties die alleen het Latijnse schrift ondersteunen - waar volledige ondersteuning voor de complexiteit van Unicode bijvoorbeeld niet nodig is - is het meestal handiger om UTF-8 te gebruiken en te profiteren van de ASCII-compatibiliteit.

wat te doen als je Facebook is gehackt

In het bijzonder moeten webpagina's worden opgeslagen en verzonden met UTF-8, de standaard voor HTML5. Dit in tegenstelling tot het eerdere web, dat standaard in ASCII handelde voordat dat werd vervangen door Latijn 1.

Een norm die aan het veranderen is

De laatste herziening van ASCII vond plaats in 1986.

Unicode daarentegen wordt nog steeds jaarlijks bijgewerkt. Er worden regelmatig nieuwe scripts, personages en vooral nieuwe emoji toegevoegd. Met slechts een klein deel van deze toegewezen, zal de volledige tekenset waarschijnlijk groeien en groeien in de nabije toekomst.

Verwant: De 100 meest populaire emoji's uitgelegd

ASCII versus Unicode

ASCII heeft tientallen jaren zijn doel gediend, maar Unicode heeft het nu effectief vervangen voor alle praktische doeleinden behalve legacy-systemen. Unicode is groter en dus expressiever. Het vertegenwoordigt een wereldwijde, gezamenlijke inspanning en biedt veel meer flexibiliteit, zij het ten koste van enige complexiteit.

Deel Deel Tweeten E-mail Wat is ASCII-tekst en hoe wordt het gebruikt?

ASCII-tekst lijkt cryptisch, maar heeft veel toepassingen op internet.

Lees volgende
Gerelateerde onderwerpen
  • Technologie uitgelegd
  • Emoji's
  • Jargon
  • Webcultuur
  • Unicode
Over de auteur Bobby Jack(58 artikelen gepubliceerd)

Bobby is een technologie-enthousiasteling die bijna twee decennia als softwareontwikkelaar heeft gewerkt. Hij is gepassioneerd door gaming, werkt als recensie-editor bij Switch Player Magazine en is ondergedompeld in alle aspecten van online publiceren en webontwikkeling.

Meer van Bobby Jack

Abonneer op onze nieuwsbrief

Word lid van onze nieuwsbrief voor technische tips, recensies, gratis e-boeken en exclusieve deals!

Klik hier om je te abonneren