@iamdivine

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

Доброй ночи, есть функция скачки файла.
Файл в кодировке ANSI (DLL)
function downloadFile($file, $str)
{
	error_reporting(0);
	header("Pragma: public");
	header("Content-Type: text/html; charset=windows-1252");
iconv("utf-8", "windows-1252");
	header("Content-Disposition: attachment; charset=windows-1252; filename=".$file);
	header("Content-Transfer-Encoding: binary"); 
	header("Content-Length: " . strlen($str));
	
};


тут я получаю файл
register_shutdown_function(downloadFile("license.dll"));


И он качается в кодировке UTF-8
  • Вопрос задан
  • 109 просмотров
Пригласить эксперта
Ответы на вопрос 3
SagePtr
@SagePtr
Еда - это святое
Нельзя просто взять и перекодировать бинарный файл, он от этого "побьётся".
Кроме того, в вашем случае - я бы рекомендовал изучить хотя бы основы PHP - что такое функции, что такое аргументы функций, и только после этого пробовал бы их писать. А также - научиться пользоваться официальной документацией и уметь в ней посмотреть, какие параметры принимает конкретная встроенная функция, и как ею пользоваться.
Ответ написан
zoonman
@zoonman
CEO @ LinuxQuestions.ru
Вам нужно использовать application/octet-stream и напрочь убрать charset.
Тут хороший пример заголовков https://www.php.net/manual/ru/function.readfile.php
Ответ написан
@iamdivine Автор вопроса
Решение нашел сам:
в функцию загрузки вставить
ob_end_clean();
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы