Почему выводит кракозябры?

Использую в PHP из под Windows 10 код
<?php
$data = 'help';
exec(escapeshellcmd($data), $output, $return);
echo implode("\n", $output)."\nReturn Code: $return";
?>
а он в браузер выводит:
5adc98b51852f885742916.png
Почему так происходит??
  • Вопрос задан
  • 1502 просмотра
Решения вопроса 1
@alexalexes
Если у вас используется сервер PHP 5.6 и выше, то нужно отправлять браузеру http-заголовок, в какой кодировке скрипт будет отдавать данные, в независимости в какой кодировке сам файл скрипта, и даже в том случае, если вы нормально отдаете HTML-структуру документа.
//установка кодировки вывода
  header('Content-Type: text/html; charset=utf-8');

Если не знаете, в какой кодировке будут данные, то нужно идентифицировать кодировку, и вписать ее в header():
echo mb_detect_encoding(implode("\n", $output));
----------------------------
Кодировку подобрал для заголовка методом тыка, так как mb_detect_encoding() не вывел явного ответа.
У меня оказалась CP866:
header('Content-Type: text/html; charset=CP866');
$data = 'help';
exec(escapeshellcmd($data), $output, $return);
echo implode("<br>", $output)."<br>Return Code: ".$return;
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@sidni
Php Developer
а если так...
echo  iconv('UTF-8', 'windows-1251//TRANSLIT', implode("\n", $output))."\nReturn Code: $return";
Ответ написан
Ваш ответ на вопрос

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

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