node.js - Apabila PHP menggunakan exec untuk melaksanakan nodej, aksara Cina yang dihantar ke JS menjadi kacau.
怪我咯
怪我咯 2017-06-30 09:53:51
0
1
1088

Isu sedia ada

  1. Dalam kod PHP, gunakan exec untuk melaksanakan arahan nodejs

  2. Aksara Cina yang diterima oleh nodej adalah aksara bercelaru

  3. Semua operasi dijalankan dalam mod CLI (iaitu, dijalankan di bawah baris arahan)

  4. Dilaksanakanchcp 65001Tukar halaman kod, dan fail PHP dan NodeJS dikodkan UTF8 (tiada pengepala BOM)

  5. Jalankan arahan NodeJS terus dari baris arahan, dan nilai yang diterima adalah normal

  6. Apabila menjalankan PHP pada baris arahan, aksara Cina yang diterima oleh NodeJS adalah bercelaru

Persekitaran pembangunan

  1. Windows 10 (1703 OS Build 15063.296)

  2. PHP 5.5.7 (cli)

  3. Enjin Zend v2.5.0

  4. nod v6.9.2

  5. Baris arahan: cmd V10.0.15063

  6. Skrip ujian 1: test.php (skrip php)

  7. Skrip ujian 2: test.js (skrip nodejs)

  8. Faktor lain yang mungkin mempengaruhi:

    • test.js menggunakan pakej yargs untuk menerima parameter baris arahan

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

Ralat berulang

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

Proses pembiakan

  • Buka cmd.exe, masukkan cmd.exe,输入chcp 65001,切换编码到UTF-8 dan tukar pengekodan kepada UTF-8.


  • Lari dulutest.js,传入参数-t "白毛浮绿水", biasa

  • sedang berjalantest.php, mengeluarkan kod bercelaru

  • Sila beritahu saya apa yang menyebabkan keadaan ini dan bagaimana untuk menanganinya. Terima kasih

怪我咯
怪我咯

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

membalas semua(1)
迷茫

Windows cmd lalai kepada pengekodan gbk, jadi penghantaran utf8 akan bercelaru

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan