История изменений
Исправление
dzidzitop,
(текущая версия)
:
руками приводить ключи в, скажем, нижний регистр.
towlower() не работает, если что. К тому же он ничего не знает о языковом контексте. А работает (абсолютно неправильно) типа с «общечеловеческим языком». При том, что в разных языках разные правила и разные формы символов (т.е. разные кодпойнты, иногда несколько) в разных регистрах.
Only 1:1 character mapping can be performed by this function, e.g. the Greek uppercase letter 'Σ' has two lowercase forms, depending on the position in a word: 'σ' and 'ς'. A call to std::towlower cannot be used to obtain the correct lowercase form in this case.
а если бы и работал даже, представим, то ignore-case сортировка не эквивалентна сортировке lower-case. К тому же, всё, что не принадлежит алфавиту конкретного языка, с точки зрения языка не имеет регистра и language-aware tolower должен оставлять все такие символы без изменения.
масштаб трагедии всё ещё не очевиден?
Исправление
dzidzitop,
:
руками приводить ключи в, скажем, нижний регистр.
towlower() не работает, если что. К тому же он ничего не знает о языковом контексте. А работает (абсолютно неправильно) типа с «общечеловеческим языком». При том, что в разных языках разные правила и разные формы символов (т.е. разные кодпойнты, иногда несколько) в разных регистрах.
Only 1:1 character mapping can be performed by this function, e.g. the Greek uppercase letter 'Σ' has two lowercase forms, depending on the position in a word: 'σ' and 'ς'. A call to std::towlower cannot be used to obtain the correct lowercase form in this case.
а если бы и работал даже, представим, то ignore-case сортировка не эквивалентна сортировке lower-case. К тому же, всё, что не принадлежит алфавиту конкретного языка, с точки зрения языка не имеет регистра и language-aware tolower должен оставлять все такие символы без изменения.
машстаб трагедии всё ещё не очевиден?
Исправление
dzidzitop,
:
руками приводить ключи в, скажем, нижний регистр.
towlower() не работает, если что. К тому же он ничего не знает о языковом контексте. А работает (абсолютно неправильно) типа с «общечеловеческим языком». При том, что в разных языках разные правила и разные формы символов (т.е. разные кодпойнты, иногда несколько) в разных регистрах.
Only 1:1 character mapping can be performed by this function, e.g. the Greek uppercase letter 'Σ' has two lowercase forms, depending on the position in a word: 'σ' and 'ς'. A call to std::towlower cannot be used to obtain the correct lowercase form in this case.
а если бы и работал даже, представим, то ignore-case сортировка не эквивалентна сортировке lower-case. К тому же, всё, что не принадлежит алфавиту конкретного языка, с точки зрения языка не имеет регистра и language-aware tolower должен оставлять все такие символы без изменения.
Исправление
dzidzitop,
:
руками приводить ключи в, скажем, нижний регистр.
towlower() не работает, если что. К тому же он ничего не знает о языковом контексте. А работает (абсолютно неправильно) типа с «общечеловеческим языком». При том, что в разных языках разные правила и разные формы символов (т.е. разные кодпойнты, иногда несколько) в разных регистрах.
Only 1:1 character mapping can be performed by this function, e.g. the Greek uppercase letter 'Σ' has two lowercase forms, depending on the position in a word: 'σ' and 'ς'. A call to std::towlower cannot be used to obtain the correct lowercase form in this case.
а если бы и работал даже, представим, то ignore-case сортировка не эквивалентна сортировке lower-case.
Исправление
dzidzitop,
:
руками приводить ключи в, скажем, нижний регистр.
towlower() не работает, если что. К тому же он ничего не знает о языковом контексте. А работает (абсолютно неправильно) типа с «общечеловеческим языком». При том, что в разных языках разные правила и разные формы символов (т.е. разные кодпойнты, иногда несколько) в разных регистрах.
Only 1:1 character mapping can be performed by this function, e.g. the Greek uppercase letter 'Σ' has two lowercase forms, depending on the position in a word: 'σ' and 'ς'. A call to std::towlower cannot be used to obtain the correct lowercase form in this case.
Исходная версия
dzidzitop,
:
руками приводить ключи в, скажем, нижний регистр.
towlower() не работает, если что. К тому же он ничего не знает о языковом контексте.