У меня есть команда, которую я запускаю с 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 на любой язык. Я заметил, что строка локали кажется чувствительной к регистру.