За последние 24 часа нас посетили 20208 программистов и 1552 робота. Сейчас ищут 1928 программистов ...

(php + mysql + ajax) Проблема с кодировкой при поиске

Тема в разделе "PHP и базы данных", создана пользователем pt81, 6 сен 2010.

  1. pt81

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

    С нами с:
    6 сен 2010
    Сообщения:
    1
    Симпатии:
    0
    Делаю новый проект в utf8. Возникла проблема при поиске по ajax запросу причем проблема только в Internet Exlorer, в Firefox, Chrome все ok

    Настройки mysql:
    Код (Text):
    1.  
    2. mysql> show variables like '%char%';
    3. +--------------------------+----------------------------+
    4. | Variable_name            | Value                      |
    5. +--------------------------+----------------------------+
    6. | character_set_client     | utf8                       |
    7. | character_set_connection | utf8                       |
    8. | character_set_database   | utf8                       |
    9. | character_set_filesystem | binary                     |
    10. | character_set_results    | utf8                       |
    11. | character_set_server     | utf8                       |
    12. | character_set_system     | utf8                       |
    13. | character_sets_dir       | /usr/share/mysql/charsets/ |
    14. +--------------------------+----------------------------+
    Кодировка по умолчанию

    Код (Text):
    1.  
    2. mysql> show create table mytable
    3. CREATE TABLE `mytable` (
    4. ...  
    5. ENGINE=InnoDB DEFAULT CHARSET=utf8

    Найстройка php, в .htaccess

    Код (Text):
    1. php_value default_charset 'UTF-8'
    В выводе phpinfo

    Код (Text):
    1. Directive   Local Value Master Value
    2.  
    3. default_charset UTF-8   no value
    В html страницы которая посылает ajax запрос

    Код (Text):
    1.  
    2. <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
    3.  
    4. <title>Тест</title>
    5. <script type="text/javascript" src="/js/jquery.min.js" charset="UTF-8"></script>
    6. <script type="text/javascript" src="/js/jquery.cookie.js" charset="UTF-8"></script>
    7. <script type='text/javascript' src='/js/jquery.autocomplete.min.js' charset="UTF-8"></script>
    8. <script type="text/javascript" src="/js/search.js" charset="UTF-8">
    Сами скрипты сохранены в notepad++ в utf8

    Наконец скрипт который обрабатывает ajax запрос

    Код (Text):
    1.  
    2. require_once "DbSimple/Generic.php";
    3.  
    4. $db = DbSimple_Generic::connect('mysql://my_login:my_pass@localhost/my_db');
    5.  
    6. $db->query("set names utf8");
    7.  
    8. $objs = $db -> select("select * from my_table
    9.   where f1 like ? or f2 like ? or f3 like ? or f4 like ?", "$q%", "$q%", "$q%", "$q%");
    10.  
    11. $r=my_func(objs);
    12.  
    13. header('Content-type: text/html; charset=utf8');
    14. echo  $r;
    Никаких mb функций или преобразований кодировок со строками не использую
    Ввожу в автокомплит в FF русское название получаю результат в IE ничего.
    Пробывал обращатся напрямую к ajax скрипту


    http://test.ru/ajax/search.php?q=москва

    В FF результаты выводит, в IE нет...

    В чем может быть проблема, может быть IE почему то не в UTF посылает данные, как это проверить?
     
  2. Neka

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

    С нами с:
    16 янв 2010
    Сообщения:
    188
    Симпатии:
    0
    МелкоМягкие вообще как то по-черепашьи признают UTF-8
    функция urlencode() - urldecode() тебе поможет:)
     
  3. Apple

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

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Не знаешь? Молчи! (с)
     
  4. Neka

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

    С нами с:
    16 янв 2010
    Сообщения:
    188
    Симпатии:
    0
    Ага, я для развлечения пишу строчки типа
    PHP:
    1.  
    2. <?
    3.  
    4. if(strpos($_SERVER['HTTP_USER_AGENT'], "MSIE")) {
    5.    mb_convert($string, u, w);
    6. }
    7.  
    // Вольная цитата без сохранения синтаксиса. Касается и отображения имени файлов и всего прочего
     
  5. Apple

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

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    От незнания.
     
  6. Neka

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

    С нами с:
    16 янв 2010
    Сообщения:
    188
    Симпатии:
    0
    Тогда как "знаючи" поступить здесь:
    Есть сервак на линуксе, на нем LAMP, есть веб-приложение выводящее список файлов из дериктории, во всех браузерах названия файлов отображаются нормально, в IE же - кракозябры. Код выдается браузеру в UTF-8, с хеадером и мета-тегом про UTF-8. Лазить в настройки апач и пахепе возможности нет.
    ?

    //Извиняюсь за оффтоп
    /* P.S.: Я не говорю, что все, что я говорю - есть истина в последней инстанции. Я говорю исходя из опыта, он может быть правильным и неправильным. И в место того, чтобы направить на путь истинный, вы сухо говорите "от незнания", т.е. провозглашая себя неким "всезнайкой" и "высшим разумом" по сравнению со мной, и видимо из-за гордыни не посвящаете в свои знания (типо "пусть этот смерд сам гуглит, мое дело сказать что он дурак"). Ничего личного, просто неприятно. */