我有一个使用 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
最佳答案
对我有用的解决方案是在 shell_exec 之前运行这些命令,以确保使用正确的区域设置:
$locale = 'en_GB.utf-8';
setlocale(LC_ALL, $locale);
putenv('LC_ALL='.$locale);
大概您可以将 en_GB 更改为您的语言。我注意到区域设置字符串似乎区分大小写。
关于php - shell_exec() 的输出包含重音字符被破坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9063916/