Unicode, UTF-8 en i18n (internationalization)

Ik weet al langer (zelfs veel langer) dat er zoiets is als character encoding, maar wat dit juist inhoudt was nooit echt duidelijk voor me. De laatste tijd las ik op het weblog van Anne van Kesteren geregeld posts over UTF-8 en i18n (internationalization), waardoor m'n interesse voor deze onderwerpen begon te stijgen. In de specificaties van XML en XHTML was ik bovendien al langere tijd geleden UTF-8 en character encoding in het algemeen tegengekomen, dus moest ik er toch echt eens werk van maken.
Alleen... hoe begin je eraan? De website van Unicode is niet echt veel zeggend als je niets over het onderwerp kent. Ook de UTF-8 website is niet echt aantrekkelijk op het eerste zicht... Toen schreef Anne echter zijn 'Quick guide to UTF-8'. Dit relatief korte artikel legt uit wat de verschillen zijn tussen de verschillende character encodings, en vooral waarom unicode en UTF-8 nodig zijn. Ook stond er een link bij naar een ander (lang) artikel dat bespreekt wat character encodings zijn en wat de voordelen van unicode/utf-8 zijn. Nu ik het snap ben ik ook van plan om in de toekomst enkel nog UTF-8 te gebruiken, zeker voor documenten die op internet moeten komen. Voor een statische screenshot XHTML/XML-pagina is dat niet zo moeilijk: converteer in je favoriete teksteditor je file naar UTF-8 en klaar. In jEdit dubbelklik je bijvoorbeeld rechtsonderaan om de bufferoptions te openen en selecteer je in het lijstje 'Character encoding' 'UTF8' (je kan dit ook als standaard instellen: 'Utilities' - 'Global Options' - 'Loading & Saving' - 'Default character encoding').

screenshot Het probleem is echter dat jEdit (en waarschijnlijk geen enkele editor) kan detecteren dat een bestand in UTF-8 gecodeerd is en deze codering dus steeds terug zal aanpassen naar zijn standaard codering en mogelijk zelfs sommige tekens verkeerd weergeven, zoals je in de tekening kan zien. In jEdit kan je dit oplossen door in het begin of op het einde van je bestand een commentaar toe te voegen met daarin :encoding=UTF8:, zodat jEdit weet dat de file in UTF-8 staat.

Het volgende probleem is echter: hoe gebruik ik UTF-8 in PHP? Hoe kan je zeker zijn dat php alle uitgevoerde strings naar UTF-8 codeerd? Volgens de documentatie van php kan je UTF-8 als standaard instellen in je php.ini-bestand maar op gedeelde hosting kan je daar natuurlijk niets aan wijzigen. Volgens Anne kan je in je .htaccess file de regel AddDefaultCharset utf-8 toevoegen. Maar kan je dat ook instellen vanuit je php-pagina zelf? Even zoeken levert dit op: // Set HTTP output character encoding to UTF-8
mb_http_output('UTF-8');
(Example 6). Dat moet ik dus nog uitgebreid testen :-)

Comments

Avatar

TeRanEX on 2004-07-27 19:50 reply

Ja er is inderdaad iets mis

Ja er is inderdaad iets mis met mijn e-mail adressen van lightyear[DOT]be.
Eigenlijk wel straf: vorige week lag mijn webspace een hele dag plat. Deze is gehosted bij be-hosted.be die enkele leasing servers hebben bij LeaseWeb (in nederland). De server was gecrashed en de mensen van Leaseweb wilden absoluut niet meehelpen. Ze hadden zelfs een niet-offici?le licentie gebruikt van Red-Hat Linux om de server te installeren! Zelfs een eenvoudige reset weigerden ze.
Nadat lightyear.be twee dagen plat lag kreeg ik telefoon van squirrel.be en die vertelde me dat de server was gecrashed en dat de mensen absoluut niet mee wilden werken. "Die server staat toch niet bij Leaseweb in nederland zeker?" "ja inderdaad"... blijkbaar vinden die Kezen dat de normale manier om met hun klanten om te gaan...
(ondertussen zou alles terug in orde moeten zijn)

Avatar

TeRanEX on 2004-07-28 21:30 reply

Speedpacket ken ik van het

Speedpacket ken ik van het KDGStudents forum. Be-hosted is echter nog goedkoper en is ook zo goed als nooit offline (na bijna een jaar kan ik dat wel zeggen :-)) en heeft een z??r goede service :-)

Avatar

Maarten on 2004-07-29 14:56 reply

Ik ben Maarten van Squirrel,

Ik ben Maarten van Squirrel, en wil effe iets zeggen over UTF-8: lang niet alle hosters ondersteunen dit volledig !
Wij ondersteunen UTF-8 mits je in je pagina's de juiste charset opgeeft.

Waarom velen het niet doen: de ondersteuning loopt lang niet altijd van een leien dakje... Franse teksten durven nogal eens vol rare tekens doorgegeven worden etc.

Check dit dus eerst effe alvorens je er gebruik van wil maken !

Verder: LeaseWeb mag opkrassen !

Avatar

TeRanEX on 2004-07-29 21:26 reply

@Maarten: ik zou er eigenlijk

@Maarten: ik zou er eigenlijk altijd voor zorgen dat mijn documenten zelf aangeven dat ze in utf-8 staan of er een mechanisme is dat daarvoor zorgt zoals php die een http-header toevoegt of een .htaccess file. Ik zou zeker nooit blinderlings vertrouwen op de webserver //"never trust the network"// ;-)

Avatar

Maarten on 2004-07-31 14:45 reply

Inderdaad, de http-header

Inderdaad, de http-header effe toevoegen is ideaal en zal wel op vele plekken worden ondersteund...

Comment Atom Feed