Есть скрипт php, который реализует экспорт таблицы в SCV файл.Когда открываешь,выдает непонятные символы.Скорее всего проблема в кодировке,но я целый день бьюсь головой об стену и все попытки тщетны. Сам скрипт: Код (Text): $query = "SELECT id,producer,name,short,full,nval,price_v,price1_v,price2_v,price3_v FROM `ve_goods` WHERE producer='iptronic'"; $result = mysqli_query(DB::db(), $query); $number_of_fields = mysqli_num_fields($result); $headers = array(); for ($i = 0; $i < $number_of_fields; $i++) { $headers[] = mysqli_field_name($result, $i); } $fp = fopen('php://output', 'w'); if ($fp && $result) { header('Content-Type: text/csv; utf-8; windows-1251'); header('Content-Disposition: attachment; filename="export.csv"'); header('Pragma: no-cache'); header('Expires: 0'); fputcsv($fp, $headers); while ($row = $result->fetch_array(MYSQLI_NUM)) { fputcsv($fp, array_values($row)); } die; } function mysqli_field_name($result, $field_offset) { $properties = mysqli_fetch_field_direct($result, $field_offset); return is_object($properties) ? $properties->name : null; }
@scared1995, для беспроблемного использования сформированного csv файла в Excel - добавь соответствующий BOM. Либо открывай файл через импорт. Тогда он предложит выбрать кодировку.
Обратите внимание на 4ую строку, и сделайте так же. PHP: function save(string $filename, bool $headers = null, $delimiter = ";", $enclosure = '"', $escape_char = "\\") { $fp = fopen($filename, 'w'); fputs($fp, $bom =( chr(0xEF) . chr(0xBB) . chr(0xBF) )); if($headers === true) { fputcsv($fp, $this->headers, $delimiter, $enclosure, $escape_char); } foreach ($this->data as $fields) { fputcsv($fp, $fields, $delimiter, $enclosure, $escape_char); } fclose($fp); }