За последние 24 часа нас посетили 16803 программиста и 1644 робота. Сейчас ищут 899 программистов ...

Проблемы с кодировкой

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

  1. pustun

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

    С нами с:
    27 ноя 2009
    Сообщения:
    5
    Симпатии:
    0
    Есть база данных MySql у которой стоит кодировка по умолчанию utf8, на каждую таблицу utf8 и даже на каждый троковый столбец utf8.
    У меня на локальном сервере все отлично работает, после того как раскатал базу на сервере хостера после инсертов в базе отображаются ??????????????.
    Перед каждым инсертом выполянется "Set Names utf8". Со странички сабмитися форма с файлом xml, файл тоже в utf8, который парсится и потом кладется в базу построчно, но опять таки налокальном сервере все работает замечательно.

    Есть идеи?????
     
  2. Simpliest

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

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Для того чтобы все работало кодировка должна быть правильной и для SELECT тоже.
    Плюс совпадать с кодировкой, которую ты отдаешь в header()

    Это покажет настройки базы
    PHP:
    1. <?php
    2. mysql_connect($host, $username, $password) || die("Can't connect");
    3. mysql_select_db($dbname) || die("Can't select DB");
    4. mysql_query('SET NAMES UTF8') || die(mysql_error());
    5. $res = mysql_query("SHOW VARIABLES");
    6. if ($res) {
    7.     echo "<h2>Наши настройки</h2>";
    8.     echo "<table>";
    9.     while($row=mysql_fetch_assoc($res)) {
    10.         if (strpos($row['Variable_name'], "character_set") !== false ||
    11.             strpos($row['Variable_name'], "collation") !== false) {
    12.             echo "<tr>";
    13.             foreach($row as $name => $val) {
    14.                 echo "<td>" . $val . "</td>";
    15.             }
    16.             echo "</tr>";
    17.         }
    18.     }
    19.     echo "</table><hr>";
    20. }
     
  3. pustun

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

    С нами с:
    27 ноя 2009
    Сообщения:
    5
    Симпатии:
    0
    Проблема не в селекте, данные в базу попадают уже вопросиками "??????????????" проблема где-то на MySql сервере хостера, на моем локальном компе все работает превосходно, сорцы соответсвенно одинкавые что у меня что на сервере хостера, базу раскатал скриптом и там везде пописан utf8, но у меня работает нормально, на сервере хостера нет
     
  4. pustun

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

    С нами с:
    27 ноя 2009
    Сообщения:
    5
    Симпатии:
    0
    Есть одна особенность: данные в базу попадают 2-я путями. Первый - со странички и в базе все нормально отображается вычитывается. Второй - импорт из xml-файла который который заливается на сервер через форму с инпутом для файлов.
    Во втором случае в базу попадают вопросики, хотя добавление проходит через один и тот же метод.
     
  5. Simpliest

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

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    А кодировка XML-файла совпадает с кодировкой страницы? :)
    Судя по твоему комментарию - нет.

    Так что определяй его кодировку и конвертируй. Или наоборот изначально готовь его в нужной кодировке.
     
  6. pustun

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

    С нами с:
    27 ноя 2009
    Сообщения:
    5
    Симпатии:
    0
    Да все у меня нормально скодировкой.
     
  7. Simpliest

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

    С нами с:
    24 сен 2009
    Сообщения:
    4.511
    Симпатии:
    2
    Адрес:
    Донецк
    Так не бывает :)
    Страница например в UTF-8, а файл делал в win-1251 (или наоборот)
    файл заливаемый через форму не конвертируется ни с того ни с сего.

    А после, ты сам говоришь, что один и тот же код работает :)