在windows系统中,PHP cli 模式下,
exec('ipconfig 2>&1', $output, $status); print_r($output); 返回值为空
可能是编码的原因,对 $output 编码转换后,显示正常
$output = mb_convert_encoding($output, "utf-8", "GBK");
可是和 cmd 模式下 还是有差异的,前者显示为 英文,而后者显示为 中文,使用 putenv 和 setlocale 设置后仍然显示为英文
putenv('LANG=zh_CN.UTF-8');
putenv('LANGUAGE=zh_CN.UTF-8');
setlocale(LC_ALL, "zh_CN.UTF-8");
查阅 https://www.php.net/manual/zh/migration71.windows-support.php
https://www.php.net/manual/zh/features.commandline.php
echo sapi_windows_cp_get(); 显示为 65001 ,PHP的代码页默认为 utf-8
然后用 sapi_windows_cp_set('936'); 更改为 GBK ,
exec('ipconfig 2>&1', $output, $status); print_r($output);
显示为中文
