| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > JavaScript: Общие вопросы > AJAX и strpos,strtolower |
| Автор: Самозванка 28.9.2007, 16:08 | ||||
| Возвращаю файл php с помощью AJAX. Функции strpos,strtolower почему то работают некорректно... при том strpos вообще не сравнивает, а strtolower возвращает пустые квадратики. Так понимаю проблема с кодировками, как можно решить эту проблему?
AJAX код:
|
| Автор: dsCode 28.9.2007, 16:23 |
| Самозванка, из какой в какую кодировку происходит преобразование? Если из UTF в 1251, то надо местами поменять в iconv(...). И для работы strtolower/upper надо локаль устанавливать (setlocale(LC_ALL, "ru_RU.CP1251");), а то были "глюки" (в 4-ой версии PHP или еще какой), когда strtolower и strtoupper работали наоборот для русских букв. |
| Автор: Самозванка 28.9.2007, 16:29 |
| dsCode, локаль устанавливала, не помогает... iconv правильно установлено...( |
| Автор: dsCode 28.9.2007, 16:37 |
| Самозванка, если данные приходят через аякс, - так они и так приходят в UTF-8, их не нужно дополнительно перекодировать. В примере - данные ковертируются из 1251 в UTF-8, причем, строка написана вручную. Соответственно вопрос - в какой кодировке сам файл? Что выводит echo $a? |
| Автор: SelenIT 28.9.2007, 17:18 |
| C какой версии PHP strtolower со товарищи работает с мультибайтными кодировками а-ля UTF-x? Разве для этого нужны не их http://www.php.net/manual/ru/function.mb-strtolower.php? |
| Автор: Самозванка 1.10.2007, 10:51 |
| SelenIT, а надо что нить дополнительное устанавливать для mb аналагов? А то просто так функция mb_strtolower почему то не срабатывает. |
| Автор: SelenIT 1.10.2007, 15:20 |
| Самозванка, нужно установить расширение http://www.php.net/manual/ru/ref.mbstring.php. Для серьезной работы с UTF-8 без него, имхо, все равно никак (preg_match с модификатором u, имхо, не выход)... |