За последние 24 часа нас посетили 27910 программистов и 1814 роботов. Сейчас ищет 831 программист ...

Вместо рускох символов вопросительные знаки!!!!!

Тема в разделе "PHP для новичков", создана пользователем VaneS, 8 дек 2011.

  1. VaneS

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

    С нами с:
    16 ноя 2011
    Сообщения:
    636
    Симпатии:
    4
    Адрес:
    Россия
    Здравствуйте, никак не могу понять что делать!
    У меня в странице есть блок div, в начале (при загрузке страницы index.php) я туда вписываю текст средствами php вот код
    PHP:
    1.  
    2. <?php
    3. $rez=mysql_query("SELECT txt FROM rek",$db);
    4. $myrrow=mysql_fetch_array($rez);
    5. $i=1;
    6. do
    7. {
    8.     $txt[$i]=$myrrow['txt'];
    9.     $i++;
    10. }
    11. while($myrrow=mysql_fetch_array($rez));
    12. $x = rand(1,$i);
    13. if($txt[$x]!="")
    14. {
    15. echo $txt[$x];
    16. }
    17. ?>
    18.  
    Потом средствами Ajax я периодически меняю текст в этом блоке, делая запрос уже к отдельному скрипту
    вот код того скрипта rek.php
    PHP:
    1.  
    2. <?php
    3. include("../connect.php");
    4. mysql_query("SET NAMES 'cp1251'", $db);
    5. $rez=mysql_query("SELECT txt FROM rek",$db);
    6. $myrrow=mysql_fetch_array($rez);
    7. $i=0;
    8. do
    9. {
    10.     $txt[$i]=$myrrow['txt'];
    11.     $i++;
    12. }
    13. while($myrrow=mysql_fetch_array($rez));
    14. $x = rand(0,$i);
    15. if($txt[$x]!="")
    16. {
    17. echo $txt[$x];
    18. }
    19. ?>
    20.  
    отдельно что бы было легче вызывать для ajax
    вот код
    [js]
    setInterval(function(){
    var zap = $.get('ajax/rek.php',function(ccc){
    if(ccc!="")
    {
    $('#rek').text(ccc);
    }
    });
    },5000);
    [/js]
    Проблема заключается в том что когда текст подгружается средствами Ajax вместо русских символов отображаются вопросительные знаки!!!!
    Раньше делал на денвере, все работало нормально!!!!! Потом перенес на другой сервер php-5.3.8 mysql-5.5.18 вот эта проблема началась! Может кто подскажет что мне делать? Где кодировку указать? Заранее спасибо!!!!!!!!!!
     
  2. Denis.Y

    Denis.Y Активный пользователь

    С нами с:
    8 авг 2011
    Сообщения:
    145
    Симпатии:
    0
    Адрес:
    Россия, Самарская область
    используйте iconv() для вывода результатов в rek.php и перекодируйте из utf-8 в кодировку, используемую у вас на странице.
     
  3. VaneS

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

    С нами с:
    16 ноя 2011
    Сообщения:
    636
    Симпатии:
    4
    Адрес:
    Россия
    мне не "в" нужно, а "из" сейчас посмотрю в нете что это такое!!!!!

    Вот на время открываю свой сайт для наглядности http://95.78.222.206/
     
  4. Denis.Y

    Denis.Y Активный пользователь

    С нами с:
    8 авг 2011
    Сообщения:
    145
    Симпатии:
    0
    Адрес:
    Россия, Самарская область
    используя iconv() вы можете двунаправленную конвертацию делать. как В, так и ИЗ.
     
  5. VaneS

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

    С нами с:
    16 ноя 2011
    Сообщения:
    636
    Симпатии:
    4
    Адрес:
    Россия
    А как узнать какая кодировка Получается при выборке из базы?
     
  6. Denis.Y

    Denis.Y Активный пользователь

    С нами с:
    8 авг 2011
    Сообщения:
    145
    Симпатии:
    0
    Адрес:
    Россия, Самарская область
    попробуйте так - rek.php
    Код (Text):
    1.  
    2.      <?php
    3.      include("../connect.php");
    4.      mysql_query("SET NAMES 'cp1251'", $db);
    5.      $rez=mysql_query("SELECT txt FROM rek",$db);
    6.      $myrrow=mysql_fetch_array($rez);
    7.      $i=0;
    8.      do
    9.      {
    10.          $txt[$i]=$myrrow['txt'];
    11.          $i++;
    12.      }
    13.      while($myrrow=mysql_fetch_array($rez));
    14.      $x = rand(0,$i);
    15.      if($txt[$x]!="")
    16.      {
    17.      $to_print = iconv('utf-8','cp1251',$txt[$x]);
    18.      echo $to_print;
    19.      }
    20.      ?>
     
  7. Denis.Y

    Denis.Y Активный пользователь

    С нами с:
    8 авг 2011
    Сообщения:
    145
    Симпатии:
    0
    Адрес:
    Россия, Самарская область
    ajax работает в utf-8 кодировке. всё что попадает в него, должно быть в ней или к ней приводится и при возвращении результата тоже самое должно приводится к виду кодировки, используемой на странице вывода.
     
  8. VaneS

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

    С нами с:
    16 ноя 2011
    Сообщения:
    636
    Симпатии:
    4
    Адрес:
    Россия
    Что то теперь вообще отказал в работе, текст на странице не подгружается..... А можно как нибудь указать кодировку в самом скрипте?
    [js]
    setInterval(function(){
    var zap = $.get('ajax/rek.php',function(ccc){
    if(ccc!="")
    {
    $('#rek').text(ccc);
    }
    });
    },5000);
    [/js]
     
  9. VaneS

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

    С нами с:
    16 ноя 2011
    Сообщения:
    636
    Симпатии:
    4
    Адрес:
    Россия
    Извините, но Ваш способ почему то не работает!!!! Текст вообще не выводится!
     
  10. Denis.Y

    Denis.Y Активный пользователь

    С нами с:
    8 авг 2011
    Сообщения:
    145
    Симпатии:
    0
    Адрес:
    Россия, Самарская область
    а в какой кодировке данные в БД хранятся ?!

     
  11. VaneS

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

    С нами с:
    16 ноя 2011
    Сообщения:
    636
    Симпатии:
    4
    Адрес:
    Россия
    cp1251_general_ci
     
  12. VaneS

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

    С нами с:
    16 ноя 2011
    Сообщения:
    636
    Симпатии:
    4
    Адрес:
    Россия
    Хах всем спасибо, но я кажется сделал!!!!!!!!!!! не понимаю по какому принципу, но это работает!!!
    Я просто в rek.php принудительно указал кодировку юникод вместо кирилицы mysql_query("SET NAMES 'utf8'", $db); и вооля у меня работает)))

    PHP:
    1.  
    2. <?php
    3. include("../connect.php");
    4. mysql_query("SET NAMES 'utf8'", $db);
    5.  
    6. $rez=mysql_query("SELECT txt FROM rek",$db);
    7. $myrrow=mysql_fetch_array($rez);
    8.  
    9. $i=0;
    10. do
    11. {
    12.     $txt[$i]=$myrrow['txt'];
    13.     $i++;
    14. }
    15. while($myrrow=mysql_fetch_array($rez));
    16. $x = rand(0,$i);
    17. if($txt[$x]!="")
    18. {
    19. echo $txt[$x];
    20. }
    21.  
    22. ?>
    23.