UTF-8

 

 
Ga naar: navigatie, zoek

UTF-8 (8-bit Unicode Transformation Format) is een manier om Unicode/ISO 10646 tekens op te slaan als een stroom van bytes, een zogenaamde tekencodering. Het alternatief heet UTF-16.

UTF-8 is een tekencodering met een variabele lengte: niet elk teken gebruikt evenveel bytes. Afhankelijk van het teken worden tussen 1 en 4 bytes gebruikt. Voor het vastleggen van elk van de 128 ASCII-tekens is slechts één byte nodig.

Hoewel het niet efficiënt lijkt om Unicodetekens in 4 bytes te moeten coderen, is het zo dat UTF-8 eenvoudig in gebruik is omdat de codering van een tekst met uitsluitend ASCII-tekens in ASCII en UTF-8 gelijk is.

 Beschrijving

UTF-8 is gestandaardiseerd als RFC 3629 (UTF-8, a transformation format of ISO 10646).

Samenvattend worden de Unicodetekens in groepen bits ingedeeld, die worden verdeeld over de lage bits van de UTF-8 bytes.

Tekens 0-127, de ASCII-tekens, kunnen direct worden gecodeerd in een byte met het hoogste bit 0. Voor andere tekens zijn tot 4 bytes nodig. Alle bytes voor zulke tekens hebben het hoogste bit 1, zodat verwarring met de ASCII-tekens wordt voorkomen.

Codegebied
hexadecimaal
UTF-16 UTF-8
binair
Opmerking
000000 - 00007F 00000000 0xxxxxxx 0xxxxxxx ASCII equivalenten; byte begint met nulbit
000080 - 0007FF 00000xxx xxxxxxxx 110xxxxx 10xxxxxx eerste byte begint met 110, tweede met 10
000800 - 00FFFF xxxxxxxx xxxxxxxx 1110xxxx 10xxxxxx 10xxxxxx eerste byte begint met 1110, volgende met 10
010000 - 10FFFF 110110xx xxxxxxxx
110111xx xxxxxxxx
11110xxx 10xxxxxx 10xxxxxx 10xxxxxx eerste byte begint met 11110, volgende met 10

Voordelen

  • Omdat veel westerse letters slechts 1 byte in beslag nemen, is UTF-8 voor westerse talen compacter dan het eenvoudigere UTF-16.
  • Het is veel eenvoudiger om unix-systemen compatibel te maken met UTF-8 dan met UTF-16, bijvoorbeeld omdat UTF-16 veel nulbytes bevat die in ASCII systemen een speciale betekenis hebben.
  • UTF-8 strings kunnen worden gesorteerd alsof ze byte-strings zijn.
  • Woordbreekroutines voor ASCII werken met UTF-8 correct zonder wijziging.
  • De variabele lengte van de tekens in UTF-8 is makkelijk te decoderen.
  • UTF-8 is de standaardcodering voor XML-bestanden.

 Nadelen

  • De variabele lengte maakt het lastiger om direct met tekenstrings te werken in veel programmeertalen. Dit kan worden opgelost door hiervoor de juiste bibliotheken te gebruiken.
  • Veel oosterse karakters gebruiken 3 bytes in UTF-8 terwijl ze slechts 2 bytes zouden gebruiken in UTF-16. Hierdoor wordt tekst in deze talen groter dan noodzakelijk.

Extensible Markup Language

 

(Doorverwezen vanaf XML)
Ga naar: navigatie, zoek

eXtensible Markup Language (XML) is een standaard voor het definiëren van formele markup-talen voor de representatie van gestructureerde gegevens in de vorm van platte tekst. Deze representatie is zowel machineleesbaar als leesbaar voor de mens.

Met andere woorden: XML is een bepaalde manier om gegevens gestructureerd vast te leggen. Deze manier is gedefinieerd en mag iedereen gebruiken. Het is ontworpen om zowel door een programma als door een mens leesbaar te zijn. XML is niet alleen geschikt om gegevens in op te slaan maar wordt de laatste tijd ook meer en meer gebruikt om gegevens via het internet te versturen. De recent populaire Ajax-methodiek maakt van XML gebruik.

XML is een vereenvoudigde vorm van SGML, Standard Generalized Markup Language, een heel complexe standaard die gebruikt werd om ingewikkelde documenten vorm te geven.
Een eerder aftreksel van SGML is HTML HyperText Markup Language. HTML heeft voor een doorbraak in SGML-achtig vormgegeven tekst gezorgd, maar gegevens die op een HTML-pagina staan zijn voor computers niet als zodanig te herkennen.

XML zorgt nu juist voor die herkenbaarheid van gegevens. Voorbeeld: een XML-bestand dat een muziek-playlist beschrijft zou er als volgt uit kunnen zien:

<?xml version="1.0" encoding="ISO-8859-1"?>
<playlist name="mylist">
 <song>
  <title>Little Fluffy Clouds</title>
  <artist>the Orb</artist>
 </song>
 <song>
  <title>Goodbye mother Earth</title>
  <artist>Underworld</artist>
 </song>
</playlist>

Het gaat in dit bestandsformaat dus meer om de structuur van informatie, dit in tegenstelling tot HTML, of liever de manier waarop HTML veel gebruikt wordt, waarbij het meer gaat om de presentatie van de informatie. In deze HTML-bestanden beschrijven de tags wel hoe informatie moet worden gepresenteerd maar niet wat deze informatie betekent. Dit wordt afgeraden, en is grotendeels verwijderd uit HTML 4.01 Strict.

Verwante standaarden

De afspraken over de te gebruiken tags in de "standaard"-dialecten worden formeel vastgelegd in zogenaamde DTD's (Document Type Definitie) of in de nieuwere XML Schema Definities (XSD). Naast de te gebruiken tags wordt hierin ook beschreven welke gegevens acceptabel zijn en hoe ze precies moeten worden opgegeven (bijvoorbeeld postcode bestaat uit 4 cijfers, 1 spatie, 2 letters). Het verschil tussen DTD en XSD is dat XSD schema's hierin meer uitdrukkingskracht hebben; daarnaast is XSD zelf ook een XML dialect dat met alle XML-tools kan worden bewerkt.

Hoe de gegevens opgemaakt zullen worden geef je op met een XSL document Extensible Stylesheet Language. Het is ook enigszins mogelijk om een XML-document op te maken met een CSS-document. CSS (Cascading Style Sheet) is echter beter geschikt voor XHTML. Op zo'n manier geef je in XML middels XSD en XSL een keurige scheiding tussen opmaak en inhoud. Ook XSL is zelf een (standaard) XML-dialect.

Data in XML-formaat kunnen door middel van XSLT-transformaties worden omgezet naar andere formaten zoals HTML, WML of PDF maar ook naar een XML-document met een andere structuur. In het geval van de transformatie naar HTML kan deze bewerking zowel in de browser (op het moment van tonen) als op de webserver plaatsvinden.

Voor het doorzoeken van XML-documenten zijn er standaard querytalen ontwikkeld: XPath en XQuery.

Hoewel de XML-tags in principe vrij te kiezen zijn, is het bij uitwisseling van gegevens wel zo handig als er een gemeenschappelijke standaard wordt afgesproken. Op deze manier ontstaan er allerlei XML-dialecten, elk met een eigen specifieke toepassing. Een voorbeeld van een "standaard" XML-dialect is de zogenaamde RSS-standaard (Rich Site Summary of Really Simple Syndication) waarmee nieuwssites hun headlines kunnen uitwisselen. Van nieuwssites zoals NU.nl en Slashdot zijn bijvoorbeeld zogenaamde RSS-feeds beschikbaar.

XML-icoontje

Ondertussen komen we ook het XML-icoontje regelmatig tegen op websites. Spijtig genoeg wordt dit icoontje meestal verkeerd gebruikt om aan te duiden dat deze website een RSS-feed heeft waarop bezoekers zich kunnen inschrijven. RSS-feeds gebruiken wel XML als achterliggende technologie maar RSS en XML zijn geen synoniemen. Een RSS-feed is een XML-document maar een XML-document is niet altijd (en meestal niet) een-RSS feed.

Externe links