搜尋

首頁  >  問答  >  主體

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 天前1082

全部回覆(1)我來回復

  • 迷茫

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

    windows cmd預設是gbk編碼吧,所以傳utf8會亂碼

    回覆
    0
  • 取消回覆