Vladimir Zolotykh <gsmith@eurocom.od.ua> wrote:
: Где можно задать "чисто" программистский вопрос?
: Вопрос специфический по поводу strcoll и как она себя ведет
в локалях
: С и ru_RU.KOI8-R
: Если debian-russian точно не эта группа просто не читай
дальше.
: такая вот простая функция
: main(int argc, char * argv [])
: {
: if (argc > 1)
: setlocale(LC_COLLATE, "ru_RU.KOI8-R");
: else
: setlocale(LC_COLLATE, "C");
: printf("%d\n", strcoll("a-name", "aname"));
: }
: печатает -65 если вызвана без аргументов и 1 если с ними
: Сколько ни думал, никакого разумного объяснения не придумал.
: Все из Sarge.
В локали C небуквенные символы при сравнении учитываются, а в ru_RU -
нет.
Кстати, рекомендую попробовать еще и в en_US локали. Эффект будет тот
же, что и в ru_RU
Все национальные локали базируются на iso14651_t1, в которой про -
написано:
<U002D> IGNORE;IGNORE;IGNORE;<U002D> # 37 -