搜索

首页  >  问答  >  正文

node.js - PHP使用exec执行nodejs时,传入JS的中文字符是乱码

现有问题

  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);

复现流程


怪我咯怪我咯2747 天前1084

全部回复(1)我来回复

  • 迷茫

    迷茫2017-06-30 09:55:51

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

    回复
    0
  • 取消回复