我需要使用php exec命令来处理UTF-8文件名。问题是php exec命令似乎不理解utf-8。我用这样的方法:
echo exec('locale charmap');返回ANSI_X3.4-1968
考虑到这所以的问题,解决方案如下所示:
echo exec('LANG=de_DE.utf8; locale charmap'); 但是我仍然得到相同的输出:ANSI_X3.4-1968
另一方面,如果我在bash命令行上执行这个php命令:
php -r "echo exec('LANG=de_DE.UTF8 locale charmap');"输出为UTF-8.所以问题是:
exec,如果它运行在一个网站作为apache模块?发布于 2012-12-20 10:15:05
为了回答我自己的问题,我找到了以下解决方案:
使用PHP设置locale环境变量
$locale='de_DE.UTF-8';
setlocale(LC_ALL,$locale);
putenv('LC_ALL='.$locale);
echo exec('locale charmap');这将设置为/返回UTF-8。因此,我能够向linux命令传递特殊字符和umlauts。
发布于 2019-10-13 22:28:56
这为我解决了这个问题(来源:这里的评论):
<?php
putenv('LANG=en_US.UTF-8');
$command = escapeshellcmd('python3 myscript.py');
$output = shell_exec($command);
echo $output;
?>发布于 2016-02-11 13:08:35
我也有过类似的问题。我的节目还回了一些德语字母,比如:ü接过。这是我的代码:
$programResult = shell_exec('my script');变量$programResult包含德国货币,但它们的编码很差。为了正确地编码它,可以调用utf8_encode()函数。
$programResult = shell_exec('my script');
$programResult = utf8_encode($programResult);https://stackoverflow.com/questions/13961870
复制相似问题