Примерный ответ на
Правильное сравнение имен файлов Unicode .
Как правило, рекомендуется вводить обе строки в верхнем регистре (используя CharUpper
, CharUpperBuff
или LCMapString
), а затем сравнивать, используя двоичное сравнение (то есть memcmp или wmemcmp, а не CompareString с инвариантной локалью). Файловая система не выполняет нормализацию Unicode, и правила регистра не зависят от настроек локали.
Есть неприятные неоднозначные случаи при работе с персонажами, правила корпусов которых изменились в разных версиях Unicode, но это примерно так же хорошо, как вы можете.