node.js - Lorsque PHP utilise exec pour exécuter nodejs, les caractères chinois transmis dans JS sont tronqués
怪我咯
怪我咯 2017-06-30 09:53:51
0
1
1056

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

  • Ouvrez cmd.exe, saisissez cmd.exe,输入chcp 65001,切换编码到UTF-8 et changez l'encodage en UTF-8.


  • Courez en premiertest.js,传入参数-t "白毛浮绿水", normal

  • est en cours d'exécutiontest.php, affichant un code tronqué

  • S'il vous plaît, dites-moi ce qui a causé cette situation et comment y faire face. Merci

.
怪我咯
怪我咯

走同样的路,发现不同的人生

répondre à tous(1)
迷茫

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

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal