NB: Dit bericht is aanzienlijk aangepast. De potentiele problemen die ik in de eerste versie geschetst heb zijn voor een groot deel achterhaald door dat Kladblok bij twijfel tussen ANSI of UTF-8 toch kiest voor UTF-8, terwijl ik uitgegaan was van ANSI als default in dat geval.
Steeds vaker worden Gedcoms aangeboden in UTF-8 codering. Een goede zaak denk ik. Unicode is toch de toekomst wat betreft tekst codering, zeker bij uitwisseling tussen programma's.
UTF-8 kan optioneel vergezeld gaan van een Byte Order Mark (BOM). Het niet verplicht stellen van een BOM beschouw ik als een gemiste kans in de UTF-8 specificatie. Bij b.v. de UTF-16 is de BOM wel verplicht en ook noodzakelijk.
Bij UTF-8 is de byte volgorde al vastgelegd, dus daar speelt de BOM geen rol, maar wel bij de eenduidige en snelle bepaling of we met en UTF-8 bestand te maken hebben of niet.
Daarbij denk ik b.v. aan Windows Kladblok, maar ook andere programma's, zoals het tool Beyond Compare, dat ik veelvuldig gebruik om twee gedcoms met elkaar vergelijken.
Ik vind dat UTF-8 zonder BOM eigenlijk uitgebannen zou moeten worden en zou graag uw mening daarover horen.
Verder ben ik geïnteresseerd in het gebruik van een UTF-8 BOM door de verschillende stamboomprogramma's.
Zelf gebruik ik als genealogie programma GensDataPro (GDP). Helaas gebruikt die (nog) geen UTF-8 met BOM bij de Gedcom export. Wel kan GDP prima omgaan met een UTF-8 BOM bij Gedcom import.
Dat laatste geldt ook voor GenealogieOnline.
Heeft GOnline ergens een pagina over wat verwacht wordt en wenselijk is voor de Gedcom codering ?
Als ik iets in mijn Gedcom wil aanpassen voeg ik altijd eerst een BOM toe aan UTF-8 m.b.v. Windows Kladblok. Kladblok werkt intern met Unicode en kan de volgende coderingen importeren en exporteren: ANSI, UTF-8, UTF-8 met BOM, UTF16 LE (Unicode) en UTF16 BE.
Het toevoegen van een BOM gaat als volgt:
1) Open de UTF-8 Gedcom met Kladblok.
Kladblok bepaalt d.m.v. "Automatisch detecteren" de codering van het import bestand.
Als extra check kijken we of er ergens in de header staat "1 CHAR UTF-8".
Het resultaat van dat "Automatisch detecteren" kunnen we zien als we het bestand weer opslaan. We doen dit met:
2) Bestand > Opslaan als
Naast "Codering:" staat of UTF-8 of ANSI gebruikt is bij het importeren.
3) Staat er UTF-8 kies dan bij "Codering:" voor "UTF-8 met BOM" en sla het bestand op. We zijn nu klaar.
4) Staat er onverhoopt toch ANSI, maar is "1 CHAR UTF-8" wel aanwezig in de header tekst, dan slaan we het bestand NIET op, Klik op "Annuleren".
5) Importeer dan het bestand opnieuw met: Bestand > Openen
We zien nu alleen *.txt documenten.
5) Door bij "Tekstdocumenten (*.txt)" te kiezen voor "Alle documenten (*.*)"
komt ook het gedcom bestand in beeld.
6) selecteer dit bestand en kies vervolgens bij "Codering:" voor UTF-8 ipv "Automatisch selecteren".
We weten nu zeker dat de gedcom correct geïmporteerd wordt en kiezen weer voor:
7) Bestand > Opslaan als
8) Kies bij "Codering:" nu voor "UTF-8 met BOM" en sla het bestand op.
In het vervolg zullen Kladblok en andere tools dit bestand altijd als "UTF-8 met BOM" openen en indien van toepassing ook weer opslaan als "UTF-8 met BOM", zonder speciale actie van de gebruiker. Daardoor is de tekst die getoond wordt correct en worden aanpassingen correct gecodeerd.
Hoop dat dit nuttig was en ben benieuwd naar uw reacties.