我有一个命令,我使用shell_exec()
从PHP运行。
有时命令的输出将包含重音字符。
从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
答案 0 :(得分:2)
对我有用的解决方案是在shell_exec之前运行这些命令,以确保使用正确的语言环境:
$locale = 'en_GB.utf-8';
setlocale(LC_ALL, $locale);
putenv('LC_ALL='.$locale);
据推测,您可以将en_GB更改为您的语言。我注意到语言环境字符串似乎区分大小写。