首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP更改编码

PHP更改编码
EN

Stack Overflow用户
提问于 2012-12-19 21:52:17
回答 3查看 16.7K关注 0票数 20

我需要使用php exec命令来处理UTF-8文件名。问题是php exec命令似乎不理解utf-8。我用这样的方法:

代码语言:javascript
复制
echo exec('locale charmap');

返回ANSI_X3.4-1968

考虑到所以的问题,解决方案如下所示:

代码语言:javascript
复制
echo exec('LANG=de_DE.utf8; locale charmap'); 

但是我仍然得到相同的输出:ANSI_X3.4-1968

另一方面,如果我在bash命令行上执行这个php命令:

代码语言:javascript
复制
php -r "echo exec('LANG=de_DE.UTF8 locale charmap');"

输出为UTF-8.所以问题是:

  1. 为什么在bash和apache_module/web页面上执行php命令有不同的结果?
  2. 如何设置UTF-8的exec,如果它运行在一个网站作为apache模块?
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-12-20 10:15:05

为了回答我自己的问题,我找到了以下解决方案:

使用PHP设置locale环境变量

代码语言:javascript
复制
$locale='de_DE.UTF-8';
setlocale(LC_ALL,$locale);
putenv('LC_ALL='.$locale);
echo exec('locale charmap');

这将设置为/返回UTF-8。因此,我能够向linux命令传递特殊字符和umlauts。

票数 41
EN

Stack Overflow用户

发布于 2019-10-13 22:28:56

这为我解决了这个问题(来源:这里的评论):

代码语言:javascript
复制
<?php
putenv('LANG=en_US.UTF-8'); 
$command = escapeshellcmd('python3 myscript.py');
$output = shell_exec($command);
echo $output;
?>
票数 5
EN

Stack Overflow用户

发布于 2016-02-11 13:08:35

我也有过类似的问题。我的节目还回了一些德语字母,比如:ü接过。这是我的代码:

代码语言:javascript
复制
$programResult = shell_exec('my script');

变量$programResult包含德国货币,但它们的编码很差。为了正确地编码它,可以调用utf8_encode()函数。

代码语言:javascript
复制
$programResult = shell_exec('my script');
$programResult = utf8_encode($programResult);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13961870

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档