Master-X
Форум | Новости | Статьи
Главная » Форум » Программинг, Скрипты, Софт, Сервисы » 
Тема: Sort() и кириллица
цитата
01/08/08 в 12:05
 Sterx
ajax'ом в бекэнд идет массив из строк на кириллице
стоит setlocale нужная перед обработкой
если добавляешь латиницу
то sort сортирует ее и ставит впереди кирилических строк
а кириллицу напрочь отказывается. ucfirst работает для кириллицы
цитата
01/08/08 в 12:49
 Corex
Цитата:
добавляешь латиницу то sort сортирует ее и ставит впереди кирилических строк

Это так и должно быть. А что кириллицу не сортирует, ХЗ. Пример массива можно, который из ajax приходит (через print_r или var_dump)? И какая кодировка, какой запрос GET/POST?
цитата
01/08/08 в 14:12
 Sterx
запрос POST
[0]=>[позиция два]
[1]=>[позиция один]
а кодировка UTF скорее всего
пробовал перекодировать - получается абракодабра
вопрос не принципиальный, просто хотелось бы знать где косяк
цитата
01/08/08 в 17:23
 nordic
Были проблемы с кириллицей. Использовал xAjax. Долго промучался с настройками базы, страницы, JS и PHP частей библиотеки xAjax.... Все бестолку, даже когда везде все стояло одинаково.

Решением стало использование версии xAjax 0.2.4
Почему-то именно эта версия работала с кириллицей даже без настроек и при несовпадении кодировок... icon_eek.gif
цитата
04/08/08 в 07:55
 Corex
Sterx:
POST запрос JQuery скорее всего идёт в UTF (по аналогии с другими либами, с JQuery пока не работал плотно), а юникод плохо обрабатывается функциями типа sort:
Цитата:
Functions like sort, when sorting alphanumerically, will lack the knowledge to know how to sort multi byte UTF-8 characters in a manner which is semantically correct. sort will still sort ASCII 7 characters correctly (semantically correct) but will only be able to sort multibyte UTF-8 characters based on their byte-by-byte values.


Думаю, отсортировать можно либо конвертнув через iconv в нужную кодировку, либо через сравнение мультибайтовых строк в коллбэк функции для usort.
цитата
04/08/08 в 09:51
 dDan
Ну данные идут точно в UTF
Код:

function strutf($a,$b){
  return strcmp(iconv('UTF8','cp1251',$a),iconv('UTF8','cp1251',$b));
}
usort($_POST,'strutf');

Попробуй так


Эта страница в полной версии