我需要使用php exec命令解决UTF-8文件名.问题是php exec命令似乎不懂utf-8.我使用这样的东西:
echo exec('locale charmap');
返回ANSI_X3.4-1968
看看this SO问题,解决方案看起来像这样:
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.
所以问题是:
>为什么在bash和apache_module / web页面执行php命令有不同的结果?
>如果exec在网站内作为apache模块运行,如何为exec设置UTF-8?
解决方法:
要回答我自己的问题 – 我找到了以下解决方案:
使用PHP设置语言环境变量
$locale='de_DE.UTF-8';
setlocale(LC_ALL,$locale);
putenv('LC_ALL='.$locale);
echo exec('locale charmap');
这设置为/返回UTF-8.所以我能够将特殊字符和变音符号传递给linux shell命令.
标签:php,encoding,utf-8,exec
来源: https://codeday.me/bug/20190928/1828340.html