Verwenden Sie im PHP-Code exec
, um den NodeJS-Befehl auszuführen
Die von nodejs empfangenen chinesischen Zeichen sind verstümmelte Zeichen
Alle Vorgänge werden im CLI-Modus ausgeführt (d. h. unter der Befehlszeile ausgeführt)
Ausgeführtchcp 65001
Codeseite wechseln und PHP- und NodeJS-Dateien sind UTF8-codiert (kein BOM-Header)
Führen Sie den NodeJS-Befehl direkt über die Befehlszeile aus und der empfangene Wert ist normal
Beim Ausführen von PHP in der Befehlszeile sind die von NodeJS empfangenen chinesischen Zeichen verstümmelt
Windows 10 (1703 OS Build 15063.296)
PHP 5.5.7 (cli)
Zend Engine v2.5.0
Knoten v6.9.2
Befehlszeile: cmd V10.0.15063
Testskript 1: test.php (PHP-Skript)
Testskript 2: test.js (nodejs-Skript)
Andere Faktoren, die Einfluss haben können:
test.js verwendet das yargs
-Paket, um Befehlszeilenparameter zu empfangen
Aufgrund npm
长期连不上,使用了淘宝源cnpm
命令替换了npm
Bestellung
<?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);
Öffnen Sie cmd.exe
, geben Sie cmd.exe
,输入chcp 65001
,切换编码到UTF-8
ein und ändern Sie die Kodierung auf UTF-8
.
Zuerst laufentest.js
,传入参数-t "白毛浮绿水"
, normal
läufttest.php
und gibt verstümmelten Code aus
Bitte sagen Sie mir, was diese Situation verursacht hat und wie ich damit umgehen soll. Vielen Dank
windows cmd默认是gbk编码吧,所以传utf8会乱码