PHP exec函数

陌路散爱 提交于 2020-01-16 05:24:33

环境

Mac 10.14.6
Apache/2.4.41 (Unix)
PHP 7.0.33
框架 CI 3.1.3

情景

PHP 将 MongoDB 中存储的HTML 内容处理后存入文件,HTML 内容需处理标签缩进
其中一个方案是通过 PHP 的 exec 函数调用 nodejs 来通过 beautify.js 来处理 HTML 内容的缩进

代码

测试在这里插入图片描述

在 cmd 中直接执行 node beautify-html.js, 所得结果中的中文没有乱码现象
在这里插入图片描述
但是,在 PHP 中代码如下在这里插入图片描述
然后在 cmd 中执行 php index.php test test_indent 后结果中有乱码现象出现
在这里插入图片描述

调试

1.使用 file indent.html所得文件编码为 utf-8
在这里插入图片描述
2.使用 mb_detect_encoding() 检测执行 exec 之后的所得的结果,字符串编码为 utf-8
3.使用 iconv $html = iconv('utf-8', 'gbk//TRANSLIT', $str);
尝试将执行 exec 所得结果转换不同编码,如果不加 //ignore utf-8,gbk,gb2312, 都会报错
在这里插入图片描述
但是加上 //ignore 之后,之前结果中的乱码字符就被舍弃掉了
4.使用mb_convert_encoding 转换结果字符串, $html = mb_convert_encoding($html, 'utf-8', 'utf-8');
得到的结果是乱码字符被舍弃掉
5.尝试在执行 exec 之前添加
$locale='en_US.UTF-8'; // 或 $locale='zh_CN.UTF-8';
setlocale(LC_ALL,$locale);
putenv('LC_ALL='.$locale);
但是得到的结果依然是会有个别的中文是乱码

结果

暂未找到解决方案

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!