Вывод из shell_exec (), содержащего акцентированные символы, становится искаженным - PullRequest
2 голосов
/ 30 января 2012

У меня есть команда, которую я запускаю из 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

1 Ответ

2 голосов
/ 22 февраля 2012

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...