Ru-Board.club
← Вернуться в раздел «Web-программирование»

» Плохая кодировка и не все данные файла сохраняет

Автор: Sutar
Дата сообщения: 11.07.2016 17:52
Здравствуйте,
есть такой код:


Код: <?php

header("Content-type: text/text; charset=windows-1251");

include "../.config.mysql";

$str = "";

$select_product = mysql_query("SELECT `id`, `barcode` FROM `product` ORDER BY `id` ASC");
while($product = mysql_fetch_object($select_product)) {$str .= $product->id .";". $product->barcode ."\n";}

header("Content-Length: ". strlen($str));
header('Content-Disposition: attachment; filename="listls.csv"');
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private", false);
header("Content-Description: File Transfer");
header("Content-Transfer-Encoding: ascii");
echo $str;
exit;

?>
Автор: Mavrikii
Дата сообщения: 11.07.2016 19:15
Sutar

Цитата:
тут считает не правильно.

http://php.net/manual/en/function.mb-strlen.php


Цитата:
Как это исправить?

http://php.net/manual/en/function.iconv.php

сам обратно перекодироваться он не может
Автор: Sutar
Дата сообщения: 11.07.2016 22:32
Mavrikii
mb_strlen() - тоже пробовал.... тоже ошибка((9
строк состоит из чисел и знаков ;


Цитата:
сам обратно перекодироваться он не может

а почему файл нельзя просто поменять кодировкой?(
Автор: Mavrikii
Дата сообщения: 11.07.2016 23:17
Sutar

Цитата:
mb_strlen() - тоже пробовал.... тоже ошибка((9

не верю.


Цитата:
header("Content-type: text/text; charset=windows-1251");

зачем для аттача?
тогда уж
header("Content-type: application/octet-stream");


Цитата:
а почему файл нельзя просто поменять кодировкой?(

кодировкой чего? если поменяли в notepad++ и сохранили, то обратно он не "поменяется", значит что то сделал не то или не так.
Автор: Sutar
Дата сообщения: 12.07.2016 10:22
Mavrikii

Цитата:
не верю.  

пробовал с двумя вариантами.... не получается(


Цитата:
значит что то сделал не то или не так.

в том и прикол, что меняю кодировку, она устанавливается, но сохранить нельзя. Значек такой не вылазит.... и после переоткрытия файла, она сбрасывается на установленную ранее кодировку.
Автор: vs6262
Дата сообщения: 12.07.2016 11:03
Sutar
попробуйте EmEditor
Автор: Sutar
Дата сообщения: 12.07.2016 12:08
vs6262
попробовал только-что, то-же самое.... поменял на кирилицу... а он снова в UTF-8(
Автор: Sutar
Дата сообщения: 12.07.2016 16:48
Mavrikii
Получился такой код:


Код: <?php

header("Content-Type: application/vnd.ms-excel; charset=windows-1251");

include "../.config.mysql";

$str = "";

$select_product = mysql_query("SELECT `id`, `barcode` FROM `product` ORDER BY `id` ASC");
while($product = mysql_fetch_object($select_product)) {$str .= $product->id .";". $product->barcode ."\n";}

$str .= "0;Привет, пирожок!\n";

header("Content-Length: ". mb_strlen($str, 'Windows-1251'));
header('Content-Disposition: attachment; filename="listls.csv"');
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private", false);
header("Content-Description: File Transfer");
header("Content-Transfer-Encoding: 8bit");
echo $str;
exit;

?>
Автор: ManHunter
Дата сообщения: 12.07.2016 17:57
$str формируется из базы данных, если там они в utf-8, то без преобразований и отдается на скачивание. при чем тут кодировки файлов?
Автор: Sutar
Дата сообщения: 12.07.2016 18:51
ManHunter
попробовал преобразовать через iconv - всё работает отлично. Спасибо.

Страницы: 1

Предыдущая тема: IIS8 и PHP mail() Function


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.