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
指令
<?php
print(exec('node test.js -t "红掌拨清波"'));
?>
'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
,輸出亂碼
##請問這個情況是什麼原因導致的,應該如何處理,謝謝了
windows cmd預設是gbk編碼吧,所以傳utf8會亂碼