Tekenset Nachtmerries
Een van de leukste dingen van werken in de IT is het oplossen van ingewikkelde technische problemen. Het uitzoeken van zulke problemen kan heel uitdagend zijn en je leert er vaak nieuwe dingen mee. Vooral het gevoel van voldoening na het oplossen van een probleem wat eerst onoplosbaar leek is heerlijk.
Er zijn echter soms problemen waarbij het oplossen nauwelijks voldoening geeft en je heel goed weet dat ze weer kunnen opduiken in een ander project. Ondanks het feit dat je er de voorgaande keren veel extra kennis over heb opgedaan, blijft het iedere keer lastig om op te lossen.
Een voorbeeld van zo’n lastig probleem is iets wat ik de afgelopen maand in 4 projecten tegen ben gekomen. Het gaat hier om het gebruik van speciale tekens bij het tonen of invoeren van data in een webappplicatie, vaak in combinatie met een database. Is het je wel eens opgevallen dat je op een website een artikel aan het lezen bent en er binnen de tekst allemaal vraagtekens staan op plekken waar normaal bijvoorbeeld een “a”, “e”, “u” of “ˆ” teken moet staan? Ziet er erg slordig uit. Waarschijnlijk een foutje van de redactie? Slordige progammeur? Ik kwam het recentelijk nog tegen op content in hyves.nl.
Waarom is dit altijd zo’n lastig probleem? Een tijdje terug waren er nauwelijks standaarden voor het gebruiken van speciale tekens (in Noorwegen gebruiken ze bijvoorbeeld tekens die we hier niet kennen, om nog maar te zwijgen over China en Japan). Ieder land heeft z’n eigen tekenset of zelfs een aantal variaties. Met de komst van het Internet moesten webapplicaties steeds meer rekening houden met al die verschillende tekensets. Er zijn diverse standaarden benoemd; iedere tekenset heeft een eigen ISO standaard benaming. In Nederland maken we veel gebruik van ISO-8859-1 of ISO-8859-2.
In principe zou je verwachten dat als je een applicatiestandaard X gebruikt en je de data volgens deze standaard invoert dit geen probleem hoeft te zijn. Wat het echter erg lastig maakt is dat er meerdere systeemlagen betrokken zijn bij het invoeren van data in een applicatie en elk onderdeel het eens moet zijn over de te gebruiken standaard. Een klein verschil en je ziet vraagtekens op het scherm!
Daarbij komt ook nog dat men recentelijk besloten heeft dat UTF-8 de algemene standaard moet gaan worden omdat hier alle tekensets in beschreven kunnen worden. Hierdoor zijn veel recente besturingssystemen en applicaties ingericht op UTF-8, waarvan een aantal er nog niet helemaal betrouwbaar mee om gaan. En sommige applicaties gebruiken zelfs iets andere vormen van benaming van UTF-8, om het allemaal nog complexer te maken. Veel oudere applicaties hebben een mix van verschillende standaarden en de migratie van oude data naar deze nieuwe systemen zal gegarandeerd voor veel hoofdpijn zorgen voor de programmeurs, applicatie- en systeembeheerders.
Terwijl ik dit artikel aan het afronden ben realiseer ik me dat er een kleine kans is dat ook deze content problemen zal geven met het tonen van bepaalde tekens: Ik tik dit namelijk in een text editor op een Powerbook, welke het zal opslaan in een tekenset waar m’n Mac zich prettig mee voelt. Daarna zal ik het sturen in een mailtje naar de contentbeheerder van onze website. Mijn mailprogramma zou mogelijk een ander idee kunnen hebben over de tekenset waarin het mailtje gestuurd gaat worden. Op het moment dat de contentbeheerder mijn mailtje opent zal deze de content tonen in een bepaalde tekenset en zal hij deze waarschijnlijk (na enige verbetering in mijn spelling) knippen en plakken in een invulformulier in het CMS van onze website. De code van dit CMS heeft weer een eigen idee over de te gebruiken tekenset en slaat deze vervolgens op in de database, welke ook een bepaalde tekenset gebruikt. Tenslotte bekijk je dit artikel vanaf de browser op je computer welke ook een eigen mening zal hebben over de te gebruiken tekenset. En nu maar hopen dat ze het allemaal met elkaar eens zijn.
Complex? In bovenstaand voorbeeld heb ik een aantal lagen weggelaten, om het kort te houden.
Mocht je ooit nog eens vraagtekens in plaats van speciale tekens op een website tegenkomen (en dat zal gebeuren!), realiseer je dan dat er mogelijk een programmeur of systeembeheerder hier al dagen z’n hoofd over breekt en slapeloze nachten van heeft.
Ricardo Kustner
Teamleider Beheer