Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > AJAX и strpos,strtolower


Автор: Самозванка 28.9.2007, 16:08
Возвращаю файл php с помощью AJAX. Функции strpos,strtolower почему то работают некорректно...
при том strpos вообще не сравнивает, а strtolower возвращает пустые квадратики. Так понимаю проблема с кодировками, как можно решить эту проблему?
Код

<?php 
$a = iconv('windows-1251', 'UTF-8', "Вапвпа");
echo $a;
$b = strtolower($a);
echo $b;
?>


AJAX код:
Код

function doLoad3(url1)
{ 
var url="proba.php";
url=url+"?id="+url1;
request.open("GET",url,true);
request.send(null);
request.onreadystatechange=stateChanged; 

}
function stateChanged() 
{ 
if (request.readyState==4 || request.readyState=="complete")
 { 
 document.getElementById("tttt").innerHTML=request.responseText;
 alert (request.responseText);
 } 
} 

Автор: 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
Самозванка, 
Цитата(Самозванка @  28.9.2007,  16:29 Найти цитируемый пост)
iconv правильно установлено

если данные приходят через аякс, - так они и так приходят в 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, имхо, не выход)...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)