Axel Richter: suchen in UTF-8

Beitrag lesen

Hallo,

zusammengehörende Gross-/kleinVersionen von den Buchstaben
A = 0x41 = 01000001, a = 0x61 01100001, ...
P = 0x50 = 01010000, p = 0x70 01110000, ...
Ä = 0xC4 = 11000100, ä = 0xE4 11100100, ...
             ^                  ^ Dieses Bit ist das "case-Gen ;-)", das muss beim Vergleich nur ausgeblendet werden.

Ob das bei UTF-8 noch genau so einfach geht? Bei dem UTF-8, welches für die Zeichen aus ISO-8859-1 zuständig ist, sollte es das eigentlich.

Nach nochmaliger Betrachtung unter Berücksichtigung der Code-Map http://old.no/charmap/iso-8859-1.html kann man wohl folgendes vermuten:

1. Normalerweise sollte die nicht casesensitive Suche auch bei UTF-8
Ä = 0xc384, ä = 0xc3a4
Ö = 0xc396, ö = 0xc3b6
Ü = 0xc39c, ü = 0xc3bc
noch funktionieren, weil sich der Unterschied immer noch nur in diesem einen bestimmten Bit zeigt. Offensichtlich ist es aber so, dass die Vergleichsroutinen dieses Bit nicht _immer_ ignorieren, was klar wird, wenn man bedenkt, dass sonst auch nicht zwischen
! = 0x21 = 00100001 und A = 0x41 = 01000001
2 = 0x32 = 00110010 und R = 0x52 = 01010010
             ^                       ^
usw. unterschieden werden könnte. Deshalb wird die "Verwandschaft" zwischen
Ä = 0xc384 = ...10000100 und ä = 0xc3a4 = ...10100100
                  ^                            ^
nicht erkannt. In diesem Code-Bereich wird einfach das case-Bit nicht mehr ausgeblendet. Das dies aber eben _in_ den Vergleichsroutinen der Software passiert, wird man daran nicht viel ändern können.

viele Grüße

Axel