node.js - PHP使用exec执行nodejs时,传入JS的中文字符是乱码
怪我咯
怪我咯 2017-06-30 09:53:51
0
1
1073

现有问题

  1. PHP代码中,用exec执行nodejs命令

  2. nodejs接受到的中文是乱码

  3. 所有操作,都是用CLI模式运行的(即命令行下运行)

  4. 已执行chcp 65001切换代码页,且PHP和NodeJS文件都是UTF8编码(无BOM头)

  5. 命令行直接运行NodeJS命令,接受到的值是正常的

  6. 命令行运行PHP,NodeJS接收到的中文字符为乱码

开发环境

  1. Windows 10 (1703 OS内部版本15063.296)

  2. PHP 5.5.7 (cli)

  3. Zend Engine v2.5.0

  4. node v6.9.2

  5. 命令行:cmd V10.0.15063

  6. 测试脚本1:test.php (php脚本)

  7. 测试脚本2:test.js (nodejs脚本)

  8. 其他可能影响的因素:

    • 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,输出乱码

  • 请问这个情况是什么原因导致的,应该如何处理,谢谢了

怪我咯
怪我咯

走同样的路,发现不同的人生

全部回复(1)
迷茫

windows cmd默认是gbk编码吧,所以传utf8会乱码

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板