Подключил класс PHPExcel из эксель файла делаю загрузку в БД, таким кодом Код (Text): <? require_once 'classes/PHPExcel.php'; require_once 'connect.php'; $db = mysqli_connect($host, $user, $pass); mysqli_select_db($db, $database); $loadfile = 'cons.xlsx'; // получаем имя загруженного файла require_once $_SERVER['DOCUMENT_ROOT']."/classes/PHPExcel/IOFactory.php"; // подключаем класс для доступа к файлу $objPHPExcel = PHPExcel_IOFactory::load($_SERVER['DOCUMENT_ROOT']."/uploads/".$loadfile); foreach ($objPHPExcel->getWorksheetIterator() as $worksheet) // цикл обходит страницы файла { $highestRow = $worksheet->getHighestRow(); // получаем количество строк $highestColumn = $worksheet->getHighestColumn(); // а так можно получить количество колонок for ($row = 1; $row <= $highestRow; ++ $row) // обходим все строки { $cell1 = $worksheet->getCellByColumnAndRow(0, $row); //номер консультанта $cell2 = $worksheet->getCellByColumnAndRow(1, $row); //ФИО $cell3 = $worksheet->getCellByColumnAndRow(2, $row); //РЕФ ССЫЛКА $sql = "INSERT INTO `consultant` (`number_cons`,`fio`,`reg_link`) VALUES ('$cell1','$cell2','$cell3')"; $query = mysqli_query($db, $sql) or die('Ошибка чтения записи: '.mysql_error()); } } ?> Локально в OpenServer все импортируется нормально, все русские буквы отображаются в базе как надо. Перенес на сервер в базе всё крякозябрами. Подскажите что можно сделать/куда смотреть в этом случае?
Может PHPMyAdmin в не правильно кодировке получает данные из базы? Сам скрипт PHP в какой кодировке? Можно ещё посмотреть и задать в какой кодировки обменивается PHP и база данных. Может сам PHPExcel отдаёт данные в другой кодировки? Смотри функцию md encodeing detect
Чтобы посмотреть кодировку Код (Text): SHOW VARIABLES LIKE "%character%" --- Добавлено --- Если надо будет поменять кодировку базы Код (Text): ALTER DATABASE dbname CHARACTER SET utf8;
1) В PHPMyAdmin уже попадает информация из экселя в кодировке 1251, если потом вывести из базы в скрипте php $fio = $row->fio; то выводится читабельный русский текст. 2) Сам скрипт в UTF-8 без BOOM 3) PHPExcel отдаёт данные в другой кодировки? так ведь на openserver нормально работало только чтобы по русски ФИО показать нужно было вызывать так $fio = iconv('cp1251', 'UTF-8', $row->fio);