PHP使用exec执行nodejs时,传入JS的中文字符是乱码
现有问题
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
命令
错误复现
test.php
<?php
print(exec('node test.js -t "红掌拨清波"'));
?>
test.js
'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
,输出乱码
请问这个情况是什么原因导致的,应该如何处理,谢谢了
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
windows cmd默认是gbk编码吧,所以传utf8会乱码