RU/2: Форум. Общение пользователей и разработчиков OS/2 (eCS). : Ответить на сообщение
Имя:
e-mail:
FIDO:
Home page:
сохранить данные о вас
Тема:
> > Опять извиняюсь за тупость. Объясните пожалуйста более подробнее, что значит по таблице весов. > Когда выполняется алфавитно-цифровая сортировка, то нельзя просто сравнивать ASCII-коды. > Скажем Ее и Ёё с точки зрения русского языка эквивалентны. А коды у них существенно разные. > Точно так же символы рубля (?) и номера (?) эквивалентны $ и #. > Более того, в KOI8, например, русские буквы стоят вообще не по алфавиту. > Поэтому и существуют таблицы весовых коэффициентов (collate sequence). Скажем для кодовой страницы 866 в позициях 128 и 160 будет записано одно и тоже число - 128. > Поэтому, прежде чем сравнивать символьные строки их преобразуют по этой таблице. Тогда результат сравнения не зависит от кодировки. Только от языка. > > Примечание. > Merlin'овский RexxUtil содержит две функции: > SysGetCollate() > SysNationalLanguageCompare() > К сожалению, обе работают неверно. > > SysGetCollate возвращает таблицу из COUNTRY.SYS, а для русского она зашита неверно. Но это легко поправить любым двоичным редактором. > > Почему неправильно работает SysNationalLanguageCompare() я так и не понял. Такое впечатление, что сравнение ведётся по весам из 850-й кодовой страницы.
_, _, _,
/ \ (_ / ~ )
\ / , ) / /
~ ~ ~~~
Programmed by
Dmitri Maximovich
,
Dmitry I. Platonoff
,
Eugen Kuleshov
.
25.09.99 (c) 1999,
RU/2
. All rights reserved.
Rewritten by
Dmitry Ban
. All rights ignored.