Xpoint
   [напомнить пароль]

опять кодировки

Метки: [без меток]
2007-09-20 11:05:25 [обр] Валера(6/24)[досье]

Нужно передать строку с русскими буквами из JS в PHP и обратно в JS, вообщем делаю Ajax-запрос.
Посмотрев аналогичные темы на форуме сделал так:

В JS передаю строку запроса через encodeURIComponent(search_query)
В PHP принимаю с помощью iconv("UTF-8", "Windows-1251", $_GET['search_query']), придварительно отдаю заголовок header('Content-type: text/html; charset=windows-1251');

Вместо русских букв в браузере отображается %D0%BF%D0%BF%D0%BF%...

Что делаю не так?

спустя 10 минут [обр] Эрнест(16/20)[досье]
а так пробовали?
iconv("UTF-8", "Windows-1251", urldecode($_GET['search_query']))
спустя 11 минут [обр] Валера(6/24)[досье]
Эрнест[досье], то что надо, спасибо
спустя 1 час 33 минуты [обр] Давид Мзареулян(536/1003)[досье]
В JS передаю строку запроса через encodeURIComponent(search_query)
Как именно Вы это делаете? Потому что обычно шаг, предложенный Эрнестом, не является необходимым.
спустя 16 минут [обр] Эрнест(16/20)[досье]
Давид Мзареулян[досье]Проинтуичил ;)
спустя 29 минут [обр] Валера(6/24)[досье]

Давид Мзареулян[досье], я использую Prototype, код такой:

function ajax_search(){
   new Ajax.Request("search.php",
     {
       method:"get",
      parameters: {squery: encodeURIComponent($("search_query").value), stype: $("search_type").options[$("search_type").options.selectedIndex].value},
       onSuccess: function(transport){
        $("search_result").innerHTML = transport.responseText;
        $('search_result').style.display = 'block';
       },
       onFailure: function(){ alert("Запрос не может быть выполнен, попробуйте еще раз через некоторое время...") }
     });
}

 
Далее в HTML есть <input type="text" size="30" id="search_query" class="sel">

спустя 28 минут [обр] Евгений Иванов(0/6)[досье]

Эрнест, а плюсики вам не нужны? (-:

с помощью urldecode вы их будете успешно вырезать.

спустя 8 часов [обр] Давид Мзареулян(536/1003)[досье]
Валера[досье] Вам не нужно использовать encodeURIComponent в parameters, библиотека сделает это за вас сама. Соответственно, Ваш первоначальный код (без urldecode) будет работать нормально.
спустя 47 секунд [обр] Давид Мзареулян(536/1003)[досье]
Эрнест[досье] Нет, ну понятно было, что идёт двойное кодирование. Было только непонятно, где именно.
спустя 52 минуты [обр] Валера(6/24)[досье]
Давид Мзареулян[досье], понял, у меня было подозрение что где-то делаю лишнюю работу, спасибо
Powered by POEM™ Engine Copyright © 2002-2005