suchen

Heim  >  Fragen und Antworten  >  Hauptteil

node.js – Wenn PHP exec zum Ausführen von nodejs verwendet, werden die an JS übergebenen chinesischen Zeichen verstümmelt

Bestehende Probleme

  1. Verwenden Sie im PHP-Code exec, um den NodeJS-Befehl auszuführen

  2. Die von nodejs empfangenen chinesischen Zeichen sind verstümmelte Zeichen

  3. Alle Vorgänge werden im CLI-Modus ausgeführt (d. h. unter der Befehlszeile ausgeführt)

  4. Ausgeführtchcp 65001Codeseite wechseln und PHP- und NodeJS-Dateien sind UTF8-codiert (kein BOM-Header)

  5. Führen Sie den NodeJS-Befehl direkt über die Befehlszeile aus und der empfangene Wert ist normal

  6. Beim Ausführen von PHP in der Befehlszeile sind die von NodeJS empfangenen chinesischen Zeichen verstümmelt

Entwicklungsumgebung

  1. Windows 10 (1703 OS Build 15063.296)

  2. PHP 5.5.7 (cli)

  3. Zend Engine v2.5.0

  4. Knoten v6.9.2

  5. Befehlszeile: cmd V10.0.15063

  6. Testskript 1: test.php (PHP-Skript)

  7. Testskript 2: test.js (nodejs-Skript)

  8. Andere Faktoren, die Einfluss haben können:

    • test.js verwendet das yargs-Paket, um Befehlszeilenparameter zu empfangen

    • Aufgrund npm长期连不上,使用了淘宝源cnpm命令替换了npmBestellung

Fehlerwiederholung

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);

Reproduktionsprozess


怪我咯怪我咯2747 Tage vor1083

Antworte allen(1)Ich werde antworten

  • 迷茫

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

    windows cmd默认是gbk编码吧,所以传utf8会乱码

    Antwort
    0
  • StornierenAntwort