php-shell_exec()的输出包含被重音的字符改变

我有一个使用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更改为您的语言.我注意到语言环境字符串似乎区分大小写.

相关文章

统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...
前言 之前做了微信登录,所以总结一下微信授权登录并获取用户...
FastAdmin是我第一个接触的后台管理系统框架。FastAdmin是一...
之前公司需要一个内部的通讯软件,就叫我做一个。通讯软件嘛...
统一支付是JSAPI/NATIVE/APP各种支付场景下生成支付订单,返...