Php 包含重音字符的shell_exec()的输出被损坏
我有一个从PHP运行的命令。 有时命令的输出将包含重音字符 从Bash运行时,输出将正确显示。但是,从Php 包含重音字符的shell_exec()的输出被损坏,php,shell,encoding,character-encoding,Php,Shell,Encoding,Character Encoding,我有一个从PHP运行的命令。 有时命令的输出将包含重音字符 从Bash运行时,输出将正确显示。但是,从shell_exec运行时,重音字符会丢失,输出会被截断 Bash的输出示例: . D 0 Tue Oct 25 16:45:26 2011 .. D 0 Tue Oct 25 16:45:26 2011 ... Backgro
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更改为您的任何语言。我注意到区域设置字符串似乎区分大小写。bash使用的编码不是
shell\u exec
。尝试找出正在使用的shellshell_exec
,并比较两者之间的编码配置。把这两个都加到你的问题上。可能重复-尤其是。哈克雷,你是对的。我看到了这个答案,但没有发现它提出了两种不同的解决方案,我只尝试了第一种。尝试第二个解决了问题。谢谢。请在下面添加您的解决方案作为答案并接受它。像你这样的问题不多,所以我认为在这里解决它也是值得的。你可以稍后接受你的答案(是的,这是有效的)。这将有助于使这个网站工作。