环境
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);
但是得到的结果依然是会有个别的中文是乱码
结果
暂未找到解决方案
来源:CSDN
作者:momomomomm
链接:https://blog.csdn.net/momomomomm/article/details/103989775