Как получить результат из exec с русскими символами?
Всех приветствую!
Через exec получаю результат, который имеет русские символы, однако, вместо них всякая муть идет.
Если такую же команду вбить в cmd, то русские символы отображаются нормально, а вот в php через exec, system все плохо.
Как можно это обработать?
Если нет возможности сменить кодировку для exec, может можно через iconv сделать как-то?
=====
Кому надо.
Проблему решил таким образом.
exec("ipconfig",$array);
echo iconv("cp866","utf-8",$array[1]);
Смотрите кодировки и кодовые страницы - что выдает приложение и в каком виде оно потом принимается и выводится. Для правильного результата на всех этапах должна быть одна и та же кодировка.
Точного ответа на твой вопрос сразу нельзя дать. Потому - что тут идет экспертное дерево вопросов и ответов.
Непонятно где ты запускаешь. В среде разработки или в консоли.
Вот тут и выводит всякую муть, вместо русских букв.
Сам php скрипт не запускал в консоли, ибо мне это не надо.
Ранее я сталкивался с такими проблемами.
Когда в ffmpeg запрашивал данные о файле и команду запускал через exec, то и там русские символы превращались в муть.
Artem Mamaev, Особой роли не играет. По умолчанию в винде в консоли стоит кодировка cp866 - старая досовская кодировка, даже в Вин11.
Так что нужно перекодировать в нужную вам кодировку. Как это сделать на пыхе не скажу.
Консольная команда chcp может показывать или менять текущую кодировку. Но эта команда работает только в cmd.exe и ее изменения действуют только на текущую консоль. В вашем случае консоль запускается, видимо, в скрытом режиме и не факт, что exec запускает cmd.exe.