За последние 24 часа нас посетили 16569 программистов и 1578 роботов. Сейчас ищут 982 программиста ...

Все та же кодировка

Тема в разделе "PHP и базы данных", создана пользователем Dmtq, 2 мар 2014.

  1. Dmtq

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

    С нами с:
    2 мар 2014
    Сообщения:
    28
    Симпатии:
    0
    Сильно не пинайте. Пришел я к вам за помощью, расколов n-ый монитор о голову.
    Кодировка базы, кажется (а мне теперь все только кажется), верна:
    Код (Text):
    1.  
    2. character_set_client      utf8
    3. character_set_connection  utf8
    4. character_set_database    utf8
    5. character_set_filesystem  binary
    6. character_set_results     utf8
    7. character_set_server      utf8
    8. character_set_system      utf8
    9. character_sets_dir        /usr/share/mysql/charsets/
    и:
    Код (Text):
    1.  
    2. collation_connection      utf8_unicode_ci
    3. collation_database        utf8_unicode_ci
    4. collation_server          utf8_unicode_ci
    Код примитивен ибо для пробы.
    Запись:
    Код (Text):
    1. <?php
    2. include ('dbconnect.php');
    3.    $clname = "первый клиент";
    4.    $clcompany = "компания";
    5.    $clperson = "Пупкин Вася";
    6.    $cltel = "9058192522";
    7.    $clemail = "ya@ya.ru";
    8.    $clact = "1";
    9.    $sql = 'INSERT INTO clients(clname, clcompany, clperson, cltel, clemail, clact) VALUES("'.$clname.'", "'.$clcompany.'", "'.$clperson.'", "'.$cltel.'", "'.$clemail.'", "'.$clact.'")';
    10.  if(!mysql_query($sql))
    11.  {echo '<center><p><b>ошибка</b></p></center>';}
    12.  else
    13.  {echo '<center><p><b>успех</b></p></center>';}
    14.  ?>
    И чтение:
    Код (Text):
    1. <?php
    2. include ('dbconnect.php');
    3.  $sql="SELECT * FROM clients";
    4.  $res=mysql_query($sql);
    5.  echo 'selected:</br>';
    6.  while ($memberinfo=mysql_fetch_array($res))
    7.  {
    8.  echo '  
    9.  '.$memberinfo["id"].'  
    10.  '.$memberinfo["clname"].'  
    11.  '.$memberinfo["clcompany"].'  
    12.  '.$memberinfo["clperson"].'  
    13.  '.$memberinfo["cltel"].'  
    14.  '.$memberinfo["clemail"].'  
    15.  '.$memberinfo["clact"].'  
    16. ';
    17.  print "</br>"
    18.  ;
    19.  }
    20.  ?>
    В браузере вижу это:
    [​IMG]
    В любом клиенте это:
    [​IMG]
    Пробовал workbrench, phpmyadmin, valentina.
    Меня терзают смутные сомнения, что все ЭТО работает не правильно. Именно в базу пишутся "кракозябры", читаются "кракозябры", а потом браузер приводит это в читаемый вид, применяя кодировку поверх. Не?

    Провел эксперимент - в phpmyadmin (да и в workbrench'e тоже) изменил строку "вручную". Получилось красиво, но в браузере все изменения отобразились ??????????? - вопросиками.

    Подтвердите, что я остолоп и направьте на верный путь.
    Спасибо.
     
  2. mahmuzar

    mahmuzar Старожил

    С нами с:
    6 апр 2012
    Сообщения:
    4.631
    Симпатии:
    425
    Адрес:
    РД, г. Махачкала.
    а вы проверяли точто устанавливается кодировка такой какой вы ее ставите? у меня было что кодировка оставалась в latin хоть и задавал utf8
    Код (Text):
    1. string mysqli_character_set_name ( mysqli $link )
    Для проверки какая кодировка бд стоит

    Добавлено спустя 1 минуту 51 секунду:
    а где в скрипте установлена кодировка?
     
  3. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.250
    Адрес:
    там-сям
    проблема в кодировке соединения с базой
    viewtopic.php?f=9&t=47512&p=377375#p377375
     
  4. Dmtq

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

    С нами с:
    2 мар 2014
    Сообщения:
    28
    Симпатии:
    0
    Current character set is latin1

    И что же это, как же это?

    Добавлено спустя 8 минут 54 секунды:
    Нигде. Я своим чистым разумом думал, что если сервер-браузер кодировки настроены верно, то нет необходимости каждый раз при запросах указывать кодировку. так?
     
  5. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.250
    Адрес:
    там-сям
    ты не путай кодировку ответа вебсервера и кодировку соединения клиента mysql с сервером mysql. они не пересекаются никак.
     
  6. Dmtq

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

    С нами с:
    2 мар 2014
    Сообщения:
    28
    Симпатии:
    0
    Код (Text):
    1. <?php
    2.  include ('dbconfig.php');
    3.  $db = @mysql_connect($db_loc,$db_user,$db_pass);
    4.  if(!$db)
    5.  {
    6.  echo( '<center--><p><b>No server connection</b></p>');
    7.  exit();
    8.  }
    9.  if(!@mysql_select_db($db_name,$db))
    10.  {
    11.  echo( '<center><p><b>Base '.$db_name.' unreachable!</b></p></center>');
    12.  exit();
    13.  }
    14.  echo( '<center><p><b>Connected to '.$db_name.' db</b></p></center>');
    можно указать кодировку один раз здесь? чтоб не указывать каждый раз при запросе?
     
  7. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.131
    Симпатии:
    1.250
    Адрес:
    там-сям
    укажи конечно. только этот твой код также выполняется каждый раз при запросе ))) c'est la vie

    edited: при каждом http-запросе ))) конечно НЕ нужно задавать кодировку перед каждым mysql_query