LINUX.ORG.RU

История изменений

Исправление 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() не работает, если что. К тому же он ничего не знает о языковом контексте.