Re: strcoll, C, ru_RU.KOI8-R
Vladimir Zolotykh -> debian-russian@lists.debian.org @ Thu, 01 Dec 2005 10:44:36 +0200:
VZ> Где можно задать "чисто" программистский вопрос?
VZ> Вопрос специфический по поводу strcoll и как она себя ведет в локалях
VZ> С и ru_RU.KOI8-R
VZ> Если debian-russian точно не эта группа просто не читай дальше.
VZ> такая вот простая функция
VZ> main(int argc, char * argv [])
VZ> {
VZ> if (argc > 1)
VZ> setlocale(LC_COLLATE, "ru_RU.KOI8-R");
VZ> else
VZ> setlocale(LC_COLLATE, "C");
VZ> printf("%d\n", strcoll("a-name", "aname"));
VZ> }
VZ> печатает -65 если вызвана без аргументов и 1 если с ними
VZ> Сколько ни думал, никакого разумного объяснения не придумал.
Ну а чего тут удивительного? В локали "C" AKA "порядок строго по коду
символа" минус (код 45) сортируется до n (код 110), а в человеческом языке
знаки препинания имеют все шансы следовать за буквами алфавита. Кстати,
подозреваю, не только в русском. Собери локаль en_US.ISO-8859-1 и
попробуй с ней. С шансами получишь то же самое.
--
Artem Chuprina
RFC2822: <ran{}ran.pp.ru> Jabber: ran@jabber.ran.pp.ru
А рафинированных эстетов на праздник жизни не приглашали.
Ольга Брилева в <bcthqq$29$3828@www.fido-online.com>
Reply to: