Dalam kod PHP, gunakan exec
untuk melaksanakan arahan nodejs
Aksara Cina yang diterima oleh nodej adalah aksara bercelaru
Semua operasi dijalankan dalam mod CLI (iaitu, dijalankan di bawah baris arahan)
Dilaksanakanchcp 65001
Tukar halaman kod, dan fail PHP dan NodeJS dikodkan UTF8 (tiada pengepala BOM)
Jalankan arahan NodeJS terus dari baris arahan, dan nilai yang diterima adalah normal
Apabila menjalankan PHP pada baris arahan, aksara Cina yang diterima oleh NodeJS adalah bercelaru
Windows 10 (1703 OS Build 15063.296)
PHP 5.5.7 (cli)
Enjin Zend v2.5.0
nod v6.9.2
Baris arahan: cmd V10.0.15063
Skrip ujian 1: test.php (skrip php)
Skrip ujian 2: test.js (skrip nodejs)
Faktor lain yang mungkin mempengaruhi:
test.js menggunakan pakej yargs
untuk menerima parameter baris arahan
Disebabkan npm
长期连不上,使用了淘宝源cnpm
命令替换了npm
order
<?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);
Buka cmd.exe
, masukkan cmd.exe
,输入chcp 65001
,切换编码到UTF-8
dan tukar pengekodan kepada UTF-8
.
Lari dulutest.js
,传入参数-t "白毛浮绿水"
, biasa
sedang berjalantest.php
, mengeluarkan kod bercelaru
Sila beritahu saya apa yang menyebabkan keadaan ini dan bagaimana untuk menanganinya. Terima kasih
Windows cmd lalai kepada pengekodan gbk, jadi penghantaran utf8 akan bercelaru