php - shell_exec() 的输出包含重音字符被破坏

标签 php shell encoding character-encoding

我有一个使用 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évisionvidé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/

相关文章:

php - 使用 php 创建和写入文件

linux - 不能在算术表达式中使用乘法

linux - shell 脚本 : Check if file exists in directory from a list file

security - ASN.1 如何编码对象标识符?

javascript - javascript 中的 H.264 视频编码器

php - 如何在PHP中动态设置错误报告

php - 如何在codeigniter中加入多个连接

Mac 上多个存储库的 Git 状态

javascript - PHP 加密 - JS 解密。安全问题

php - 无法在公司防火墙后面使用 Composer 进行更新/安装