Dans le code PHP, utilisez exec
pour exécuter la commande nodejs
Les caractères chinois reçus par nodejs sont des caractères tronqués
Toutes les opérations sont exécutées en mode CLI (c'est-à-dire exécutées sous la ligne de commande)
Exécutéchcp 65001
Page de codes du commutateur, et les fichiers PHP et NodeJS sont codés en UTF8 (pas d'en-tête de nomenclature)
Exécutez la commande NodeJS directement depuis la ligne de commande et la valeur reçue est normale
Lors de l'exécution de PHP en ligne de commande, les caractères chinois reçus par NodeJS sont tronqués
Windows 10 (système d'exploitation 1703, version 15063.296)
PHP 5.5.7 (cli)
Zend Engine v2.5.0
nœud v6.9.2
Ligne de commande : cmd V10.0.15063
Script de test 1 : test.php (script php)
Script de test 2 : test.js (script nodejs)
Autres facteurs pouvant affecter :
test.js utilise le package yargs
pour recevoir les paramètres de ligne de commande
En raison de npm
长期连不上,使用了淘宝源cnpm
命令替换了npm
commande
<?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);
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
Windows cmd est par défaut l'encodage gbk, donc la transmission de utf8 sera tronquée