RuWeb.net Forum

А нельзя ли установить локаль ru_RU.CP1251?
Аскольд - 21.3.2004 в 15:26

на руско.
Или может подскажете другой способ заставить PHP правильно сортировать русские строки в виндовой кодировке?


support - 22.3.2004 в 14:27

локаль ru_RU.cp1251 установлена


Аскольд - 22.3.2004 в 14:58

тогда объясните что я делаю не так. Делаю
setlocale(LC_ALL,'ru_RU.cp1251');
и все равно в результатах сортировки буква "Ё" оказывается впереди всех. При этом если делаю
setlocale(LC_ALL,'ru_RU');
сортировка полностью меняется, из чего я заключаю, что сама функция установки локали работает и проблема в самой локали.


support - 22.3.2004 в 21:59

А какой функцией вы сортируете?
Похоже в ПХП при сортировке установки локали не учитываются совсем. Вот и все...


Аскольд - 23.3.2004 в 11:36

natcasesort
В том-то и дело, что сортировка от установки локали зависит, но ни при какой установке она не сортирует правильно. Подозреваю, что создатели локали про букву "Ё" просто забыли.


support - 23.3.2004 в 13:44

Ну покажите мне где эта сортировка зависит от установки локали?
http://host2.ruweb.net/info/locales.php


Код:
setlocale (LC_ALL, 'ru_RU.cp1251');
echo strftime ("ru_RU.cp1251: %A %e %B %Yn");
sort ($fruits,SORT_STRING);
echo join('',$fruits)."nn";


support - 23.3.2004 в 13:55

C natcasesort() все выглядит иначе, но толку от этого ничуть ни больше.
http://host2.ruweb.net/info/locales2.php


support - 23.3.2004 в 14:09

А все почему? А все потому что rtfm надо внимательней.
В пхп только одна функция для сравнения строк с учетом установок локали - strcoll()
Т.ч. usort($fruits, "strcoll") - дает адекватный результат.
http://host2.ruweb.net/info/locales3.php