За последние 24 часа нас посетили 17528 программистов и 1650 роботов. Сейчас ищут 884 программиста ...

PHPExcel русские буквы в базе крякозябрами

Тема в разделе "PHP и базы данных", создана пользователем Lenok112, 31 окт 2016.

  1. Lenok112

    Lenok112 Новичок

    С нами с:
    25 окт 2016
    Сообщения:
    9
    Симпатии:
    0
    Подключил класс PHPExcel из эксель файла делаю загрузку в БД, таким кодом

    Код (Text):
    1. <?
    2. require_once 'classes/PHPExcel.php';
    3. require_once 'connect.php';
    4. $db = mysqli_connect($host, $user, $pass);
    5. mysqli_select_db($db, $database);
    6.  
    7.  
    8. $loadfile = 'cons.xlsx'; // получаем имя загруженного файла
    9. require_once $_SERVER['DOCUMENT_ROOT']."/classes/PHPExcel/IOFactory.php"; // подключаем класс для доступа к файлу
    10. $objPHPExcel = PHPExcel_IOFactory::load($_SERVER['DOCUMENT_ROOT']."/uploads/".$loadfile);
    11. foreach ($objPHPExcel->getWorksheetIterator() as $worksheet) // цикл обходит страницы файла
    12. {
    13.   $highestRow = $worksheet->getHighestRow(); // получаем количество строк
    14.   $highestColumn = $worksheet->getHighestColumn(); // а так можно получить количество колонок
    15.   for ($row = 1; $row <= $highestRow; ++ $row) // обходим все строки
    16.   {
    17.     $cell1 = $worksheet->getCellByColumnAndRow(0, $row); //номер консультанта
    18.     $cell2 = $worksheet->getCellByColumnAndRow(1, $row); //ФИО
    19.     $cell3 = $worksheet->getCellByColumnAndRow(2, $row); //РЕФ ССЫЛКА
    20.     $sql = "INSERT INTO `consultant` (`number_cons`,`fio`,`reg_link`) VALUES
    21. ('$cell1','$cell2','$cell3')";
    22.     $query = mysqli_query($db, $sql) or die('Ошибка чтения записи: '.mysql_error());
    23.   }
    24. }
    25.  
    26. ?>
    Локально в OpenServer все импортируется нормально, все русские буквы отображаются в базе как надо.

    Перенес на сервер в базе всё крякозябрами.

    [​IMG]

    [​IMG]

    Подскажите что можно сделать/куда смотреть в этом случае?
     
  2. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Может PHPMyAdmin в не правильно кодировке получает данные из базы?
    Сам скрипт PHP в какой кодировке?
    Можно ещё посмотреть и задать в какой кодировки обменивается PHP и база данных.
    Может сам PHPExcel отдаёт данные в другой кодировки? Смотри функцию md encodeing detect
     
  3. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    Чтобы посмотреть кодировку
    Код (Text):
    1. SHOW VARIABLES LIKE  "%character%"
    --- Добавлено ---
    Если надо будет поменять кодировку базы
    Код (Text):
    1. ALTER DATABASE dbname CHARACTER SET utf8;
     
  4. Lenok112

    Lenok112 Новичок

    С нами с:
    25 окт 2016
    Сообщения:
    9
    Симпатии:
    0
    1) В PHPMyAdmin уже попадает информация из экселя в кодировке 1251, если потом вывести из базы в скрипте php $fio = $row->fio; то выводится читабельный русский текст.
    2) Сам скрипт в UTF-8 без BOOM
    3) PHPExcel отдаёт данные в другой кодировки? так ведь на openserver нормально работало только чтобы по русски ФИО показать нужно было вызывать так $fio = iconv('cp1251', 'UTF-8', $row->fio);
     
  5. denis01

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

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
    PHPMyAdmin настроен криво
     
    Lenok112 нравится это.