Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » Плохая кодировка и не все данные файла сохраняет

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

Sutar



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте,
есть такой код:
 

Код:
<?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;
 
?>

 
1. header("Content-Length: ". strlen($str)); - тут считает не правильно. Хоть переменная содержит кучу данных, в файле они обрезаются. (Т.е. есть скачать файл, то в его содержание будет только ЧАСТЬ переменной $str). Если добавить strlen($str)+1000000 - работает корректно, но нужно чтоб работало корректно и без такой добавки. Как это реализовать?
 
2. Скачиваемый файл всегда в кодировке UTF-8. Пробовал менять кодировку самого файла с UTF-8 на Кириллицу Win-1251 через Notepad++, безуспешно. Файл после переоткрытия становится снова UTF-8. Как это исправить?
 
Спасибо за помощь.

Всего записей: 1150 | Зарегистр. 15-08-2011 | Отправлено: 17:52 11-07-2016
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sutar

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

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

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

http://php.net/manual/en/function.iconv.php
 
сам обратно перекодироваться он не может

Всего записей: 15023 | Зарегистр. 20-09-2014 | Отправлено: 19:15 11-07-2016 | Исправлено: Mavrikii, 19:16 11-07-2016
Sutar



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii
mb_strlen() - тоже пробовал.... тоже ошибка((9
строк состоит из чисел и знаков ;
 

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

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

Всего записей: 1150 | Зарегистр. 15-08-2011 | Отправлено: 22:32 11-07-2016
Mavrikii

Platinum Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sutar

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

не верю.  
 

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

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

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

кодировкой чего? если поменяли в notepad++ и сохранили, то обратно он не "поменяется", значит что то сделал не то или не так.

Всего записей: 15023 | Зарегистр. 20-09-2014 | Отправлено: 23:17 11-07-2016 | Исправлено: Mavrikii, 23:56 11-07-2016
Sutar



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Mavrikii

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

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

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

в том и прикол, что меняю кодировку, она устанавливается, но сохранить нельзя. Значек такой не вылазит.... и после переоткрытия файла, она сбрасывается на установленную ранее кодировку.

Всего записей: 1150 | Зарегистр. 15-08-2011 | Отправлено: 10:22 12-07-2016
vs6262



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Sutar
попробуйте EmEditor

Всего записей: 2187 | Зарегистр. 25-02-2013 | Отправлено: 11:03 12-07-2016
Sutar



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
vs6262
попробовал только-что, то-же самое.... поменял на кирилицу... а он снова в UTF-8(

Всего записей: 1150 | Зарегистр. 15-08-2011 | Отправлено: 12:08 12-07-2016
Sutar



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
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;
 
?>

 
файл сохранен в UNIX формате с кодировкой win-1251.
почему когда я скачиваю файл, то он в utf-8?

Всего записей: 1150 | Зарегистр. 15-08-2011 | Отправлено: 16:48 12-07-2016 | Исправлено: Sutar, 17:22 12-07-2016
ManHunter



Silver Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
$str формируется из базы данных, если там они в utf-8, то без преобразований и отдается на скачивание. при чем тут кодировки файлов?

----------
"На любое мое движение ваша реакция предусмотрена,
В лучшем случае - равнодушие, в худшем случае - патология..." (C) Егор Летов

Всего записей: 3091 | Зарегистр. 20-03-2004 | Отправлено: 17:57 12-07-2016 | Исправлено: ManHunter, 17:58 12-07-2016
Sutar



BANNED
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ManHunter
попробовал преобразовать через iconv - всё работает отлично. Спасибо.

Всего записей: 1150 | Зарегистр. 15-08-2011 | Отправлено: 18:51 12-07-2016
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Интернет » Web-программирование » Плохая кодировка и не все данные файла сохраняет


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru