recherche

Maison  >  Questions et réponses  >  le corps du texte

node.js - Lorsque PHP utilise exec pour exécuter nodejs, les caractères chinois transmis dans JS sont tronqués

Problèmes existants

  1. Dans le code PHP, utilisez exec pour exécuter la commande nodejs

  2. Les caractères chinois reçus par nodejs sont des caractères tronqués

  3. Toutes les opérations sont exécutées en mode CLI (c'est-à-dire exécutées sous la ligne de commande)

  4. Exécutéchcp 65001Page de codes du commutateur, et les fichiers PHP et NodeJS sont codés en UTF8 (pas d'en-tête de nomenclature)

  5. Exécutez la commande NodeJS directement depuis la ligne de commande et la valeur reçue est normale

  6. Lors de l'exécution de PHP en ligne de commande, les caractères chinois reçus par NodeJS sont tronqués

Environnement de développement

  1. Windows 10 (système d'exploitation 1703, version 15063.296)

  2. PHP 5.5.7 (cli)

  3. Zend Engine v2.5.0

  4. nœud v6.9.2

  5. Ligne de commande : cmd V10.0.15063

  6. Script de test 1 : test.php (script php)

  7. Script de test 2 : test.js (script nodejs)

  8. Autres facteurs pouvant affecter :

    • test.js utilise le package yargs pour recevoir les paramètres de ligne de commande

    • En raison de npm长期连不上,使用了淘宝源cnpm命令替换了npmcommande

Récurrence des erreurs

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

Processus de reproduction


.
怪我咯怪我咯2745 Il y a quelques jours1079

répondre à tous(1)je répondrai

  • 迷茫

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

    Windows cmd est par défaut l'encodage gbk, donc la transmission de utf8 sera tronquée

    répondre
    0
  • Annulerrépondre