Zwei Texte können auf dem Bildschirm gleich aussehen und für jeden Vergleich verschieden sein. Ein ä kann ein einzelnes Zeichen sein oder ein a mit nachgestelltem Trema, ein Leerzeichen ein gewöhnliches oder ein geschütztes, ein Bindestrich ein Minus oder ein Halbgeviertstrich.
Der Prüfer zerlegt den Text in seine Codepunkte und nennt zu jedem die Nummer, die UTF-8-Bytes und die HTML-Entität. Unsichtbare und leicht zu verwechselnde Zeichen werden gesondert gemeldet.
Zerlegte Umlaute
macOS speichert Dateinamen zerlegt: Das ä in „Größe“ steht dort als a gefolgt von einem kombinierenden Trema, also als zwei Codepunkte. Auf dem Bildschirm ist kein Unterschied zu sehen, in jedem Vergleich, jeder Suche und jeder Sortierung dagegen schon.
Die Lösung heißt Normalisierung: In der Form NFC werden solche Folgen wieder zu einem Zeichen zusammengezogen. Der Rechner meldet, ob der Text bereits in NFC vorliegt — steht dort nein, ist genau das die Ursache für scheinbar unerklärliche Vergleichsfehler.
Zeichen, die man nicht sieht
Das geschützte Leerzeichen U+00A0 kommt beim Kopieren aus dem Browser mit und verhindert dort einen Umbruch — in einer CSV-Datei macht es aus einer Zahl einen Text. Der bedingte Trennstrich U+00AD ist unsichtbar, bis das Wort umbrochen wird, und zerreißt jede Suche.
Dazu kommen die Steuerzeichen für die Schreibrichtung und die Byte-Reihenfolge-Marke U+FEFF, die am Anfang einer Datei steht und beim Einlesen als seltsames Zeichen auftaucht. Alle drei melden sich hier mit Namen und Position.