За последние 24 часа нас посетили 53727 программистов и 1772 робота. Сейчас ищут 788 программистов ...

POST не возвращает крилицу...

Тема в разделе "Прочие вопросы по PHP", создана пользователем Silver Soft, 5 авг 2011.

  1. Silver Soft

    Silver Soft Активный пользователь

    С нами с:
    5 авг 2011
    Сообщения:
    17
    Симпатии:
    1
    Доброго времени суток!

    Пишу небольшой скриптик, где значение берется с инпута и потом в скрипте используется...

    Код (Text):
    1. $q = $_POST['q'];
    если в инпут набираешь латинские буквы и цифры, то все окей, а русские буквы вообще не возвращаются...
    переменная $q становится пустой.

    как это лечится? )

    P.S. charset=windows-1251
     
  2. alexfer

    alexfer Активный пользователь

    С нами с:
    2 авг 2010
    Сообщения:
    239
    Симпатии:
    0
    а надо utf-8
     
  3. Silver Soft

    Silver Soft Активный пользователь

    С нами с:
    5 авг 2011
    Сообщения:
    17
    Симпатии:
    1
    используется фрэймворк CodeIgniter довольно большой проект, где на UTF перейти не реально уже...

    поэтому в перед вызовом POST пишу:

    Код (Text):
    1. header('Content-type: text/html; charset=UTF-8');
    криво, но все равно не работает (((
     
  4. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    видел такое. отправляющая и принимающая стороны используют разные кодировки.
    надо привести их к одной кодировке:

    header('Content-type...

    <meta http-equiv="Content-Type"...

    и там и там должны быть одинаковые
     
  5. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    блеаааать! что значит "перед вызовом POST" ? у тебя страница с помощью хидера сообщает браузеру в какой кодировке данные. "на лету" переключаться туда-сюда даже не пытайся ))))

    у тебя сайт 1251? значит все страницы должны быть такими. по симптомам у тебя страница откуда делается POST в utf-8, а принимающая в 1251. (или наоборот)

    понял?
     
  6. Silver Soft

    Silver Soft Активный пользователь

    С нами с:
    5 авг 2011
    Сообщения:
    17
    Симпатии:
    1
    ))) да 1251, а header() я уже от безисходности поставил, где-то на форуме одному человеку посоветовали с аналогичной проблемой... разумеется в обоих случаях не помогло ))

    страница 1251, там java-script autocomplete, который отправляет в php запрос, вот там я и пытаюсь получить данные.. латиница и цифры удачно проходят, а кириллица нет....

    вот код страницы:
    Код (Text):
    1. <script type="text/javascript">
    2. $(document).ready(function() {
    3.  
    4.  $("#old_num").autocomplete('/v4/numberaccount/number_search/', {
    5.     delay: 500,
    6.     autoFill: false,
    7.     max: 5,
    8.     extraParams:{}
    9.     });
    10.    
    11. });
    12.  ................
    13. </script>
    14.  
    15. ..............
    16. <form id="form1" action="/v4/numberaccount/change" method="POST" enctype="multipart/form-data">
    17.   <fieldset>
    18.      <p>Введите номер счета:
    19.       <input type="text" name="old_num" id="old_num" />
    20.     </p>
    21.   </fieldset>
    22. </form>
    23. ....................
    вот код скрипта:
    Код (Text):
    1. ..............
    2.     function number_search()
    3.     {
    4.         $q = $this->input->post('q');
    5.        
    6.         $data = $this->db->query("SELECT nomer FROM accounts.main WHERE nomer like '%$q%' LIMIT 5;");
    7. 5;");
    8.            
    9.         foreach ($data->result() as $row)
    10.         {
    11.             print("{$row->nomer}\n");
    12.         }
    13.  
    14.     } // end of func
    15. ...........
    а кодировка указывается в параметрах фреймворка и больше негде... )
     
  7. Silver Soft

    Silver Soft Активный пользователь

    С нами с:
    5 авг 2011
    Сообщения:
    17
    Симпатии:
    1
    после теста, оказалось, что русские буквы он передает, но почему-то все в нижнем регистре... парадокс ))

    осталось узнать почему? ))
    но это уже не проблема, а так маленькое неудобство))
     
  8. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Silver Soft
    хидеры ставятся перед отсылкой для текущей новосоздаваемой страницы.

    переделай весь сайт в utf8 и живи счастливо.
     
  9. Silver Soft

    Silver Soft Активный пользователь

    С нами с:
    5 авг 2011
    Сообщения:
    17
    Симпатии:
    1
    igordata, возможно так и сделаю, к тому же база у меня итак в utf8 )