php修改utf,PHP exec改变编码

我需要使用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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值