[Comm] Неправильная сортировка в консоли?

Sergey Stepanov =?iso-8859-1?q?dlagovna_=CE=C1_mail=2Eru?=
Пт Окт 13 00:47:08 MSD 2006


> > 2.
> > Я даю команду
> >
> > #LC_COLLATE=C
> >
> > Проверяю
> >
> > #set | grep LC_COLLATE
> >
> > Все в порядке, переменная LC_COLLATE имеет значение C.
> >
> > Затем даю команду
> >
> > #locale
> >
> > В выводимом списке значение переменной LC_COLLATE установлено
> > как "ru_RU.KOI8-R"
> >
> > Я не пойму, это две разных переменных с одинаковым именем?
> Нет. locale учитывает значение переменной LC_ALL (которая создана
> специально чтобы не надо было переопределять все по отдельности).
> Сделайте
> LC_ALL= locale
> чтобы увидеть это.

Сделал. Что и где я могу увидеть? 

Команды #set | grep LC_COLLATE и #locale дают те же результаты.


(Вот. О чем мы в смокиром и говорили. :-\

Нормальный ответ должен бы выглядеть примерно так:

Нет. Формально это не две разных переменных с одинаковым
именем. Переменная LC_COLLATE, которая выставляется через команду 
#set - это обычная системная переменная. А переменная LC_COLLATE,
которую вы видите в выводе команды #locale - это переменная,
существующая в рамках программы locale. Программа locale
является системным механизмом локализации, и напрямую связана
с выбором объектов локализации. В вашем случае, объект локализации -
это алгоритм сортировки, который отличается для разных языков.

Все правильные программы, для выяснения с какими объектами 
локализации им нужно работать, обращаются не напрямую к
системным переменным, а к механизму locale, который предоставляет
данные о настройке тех или иных объектов локализации (как
делать сортировку, как форматировать дату, какая кодовая страница
и.т.д.)...

Далее я написать не могу, потому что окончательно запутался,
читая доки, возможно два абзаца выше - полный бред. Но думаю
что смысл понятен, как по-хорошему должен выглядеть ответ.)
 

Со всяческими пожеланиями, Сергей.
http://xi.net.ru




Подробная информация о списке рассылки community