node.js - PHP使用exec執行nodejs時,傳入JS的中文字元是亂碼
怪我咯
怪我咯 2017-06-30 09:53:51
0
1
1045

現有問題

  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會亂碼

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!