Вывод из shell_exec (), содержащий акцентированные charcters, искалеченные

У меня есть команда, которую я запускаю с PHP с помощью shell_exec() . Иногда вывод команды будет содержать символы с акцентом.

При запуске из Bash вывод отображается правильно. Однако при запуске из shell_exec с акцентом теряются, а результат усекается несколько.

Пример вывода из Bash :

 . D 0 Tue Oct 25 16:45:26 2011 .. D 0 Tue Oct 25 16:45:26 2011 ... Background pres for political speech maggie & gemma.ppt A 3323392 Fri Oct 24 14:31:26 2008 extra listening exercise on la télévision.doc A 24064 Wed Jan 11 08:12:32 2006 gender of nouns.ppt A 42496 Fri Sep 10 07:55:42 2004 ... 63999 blocks of size 8388608. 36710 blocks available 

Пример вывода из shell_exec – обратите внимание на то, что происходит с télévision , vidéo т. Д .:

 . D 0 Tue Oct 25 16:45:26 2011 .. D 0 Tue Oct 25 16:45:26 2011 ... Background pres for political speech maggie & gemma.ppt A 3323392 Fri Oct 24 14:31:26 2008 extra listening exercise on la t gender of nouns.ppt A 42496 Fri Sep 10 07:55:42 2004 ... 63999 blocks of size 8388608. 36710 blocks available 

Решение, которое работало для меня, состояло в том, чтобы запустить эти команды перед shell_exec, чтобы убедиться, что используется правильная локаль:

 $locale = 'en_GB.utf-8'; setlocale(LC_ALL, $locale); putenv('LC_ALL='.$locale); 

Предположительно, вы можете просто изменить en_GB на любой язык. Я заметил, что строка локали кажется чувствительной к регистру.