PHP代码中,用exec
执行nodejs命令
nodejs接受到的中文是乱码
所有操作,都是用CLI模式运行的(即命令行下运行)
已执行chcp 65001
切换代码页,且PHP和NodeJS文件都是UTF8编码(无BOM头)
命令行直接运行NodeJS命令,接受到的值是正常的
命令行运行PHP,NodeJS接收到的中文字符为乱码
Windows 10 (1703 OS内部版本15063.296)
PHP 5.5.7 (cli)
Zend Engine v2.5.0
node v6.9.2
命令行:cmd V10.0.15063
测试脚本1:test.php (php脚本)
测试脚本2:test.js (nodejs脚本)
其他可能影响的因素:
test.js使用了yargs
包,用于接收命令行传参
由于npm
长期连不上,使用了淘宝源cnpm
命令替换了npm
命令
<?php
print(exec('node test.js -t "红掌拨清波"'));
?>
'use strict';
const yargs = require('yargs');
var argv = yargs
.options({
't': {
alias: 'text',
demandOption: true,
default: '',
describe: 'Source text.',
type: 'string'
}
})
.argv;
console.log(argv.t);
打开cmd.exe
,输入chcp 65001
,切换编码到UTF-8
。
先运行test.js
,传入参数-t "白毛浮绿水"
,正常
在运行test.php
,输出乱码
请问这个情况是什么原因导致的,应该如何处理,谢谢了
windows cmd默认是gbk编码吧,所以传utf8会乱码