Rumah >hujung hadapan web >tutorial js >Bagaimana untuk menukar penimbal dalam Nodejs kepada format JSON dan rentetan UTF-8?

Bagaimana untuk menukar penimbal dalam Nodejs kepada format JSON dan rentetan UTF-8?

青灯夜游
青灯夜游ke hadapan
2021-08-26 10:25:075758semak imbas

Bagaimana untuk menukar penimbal dalam Nodejs kepada format JSON dan rentetan UTF-8? Artikel berikut akan memperkenalkan kepada anda kaedah menukar format penimbal dan JSON dalam Nodejs, serta kaedah menukar Penimbal kepada rentetan UTF-8.

Bagaimana untuk menukar penimbal dalam Nodejs kepada format JSON dan rentetan UTF-8?

Node.js berbeza daripada JavaScript berasaskan pelayar kerana Node mempunyai cara untuk mengendalikan data binari walaupun sebelum draf ES6 ArrayBuffer dicadangkan. Dalam Node, kelas Buffer(buffer) ialah struktur data utama yang digunakan oleh kebanyakan operasi I/O. Ia ialah data binari mentah yang diperuntukkan di luar timbunan V8 dan tidak boleh diubah saiznya setelah diperuntukkan. [Pembelajaran yang disyorkan: "tutorial nodejs"]

Sebelum Node v6.0, untuk mencipta penimbal baharu, kita hanya perlu menggunakan kata kunci new untuk memanggil pembina:

let newBuff = new Buffer('I Love You')

Selepas v6.0, untuk mencipta contoh penimbal baharu:

let newBuff = Buffer.from('I Love You')

new Buffer() pembina telah ditamatkan dan digantikan dengan kaedah Buffer.from(), Buffer.alloc() dan Buffer.allocUnsafe() berasingan penggantian.

Untuk maklumat lanjut, anda boleh membaca dokumentasi rasmi.

Tukar Penimbal kepada JSON

Penimbal boleh ditukar kepada JSON.

let bufferOne = Buffer.from('All work and no play makes Jack a dull boy')
console.log(bufferOne)

// <Buffer 41 6c 6c 20 77 6f 72 6b 20 61 6e 64 20 6e 6f 20 70 6c 61 79 20 6d 61 6b 65 73 20 4a 61 63 6b 20 61 20 64 75 6c 6c 20 62 6f 79>

let json = JSON.stringify(bufferOne, null, 2)
console.log(json)
/*
{
  "type": "Buffer",
  "data": [
    65,
    108,
    108,
    32,
    119,
    111,
    114,
    107,
    32,
    97,
    110,
    100,
    32,
    110,
    111,
    32,
    112,
    108,
    97,
    121,
    32,
    109,
    97,
    107,
    101,
    115,
    32,
    74,
    97,
    99,
    107,
    32,
    97,
    32,
    100,
    117,
    108,
    108,
    32,
    98,
    111,
    121
  ]
}
*/

JSON menentukan bahawa jenis objek yang hendak ditukar ialah Buffer dan datanya.

Tukar JSON kepada Penampan

let bufferOriginal = Buffer.from(JSON.parse(json).data)
console.log(bufferOriginal)

// <Buffer 41 6c 6c 20 77 6f 72 6b 20 61 6e 64 20 6e 6f 20 70 6c 61 79 20 6d 61 6b 65 73 20 4a 61 63 6b 20 61 20 64 75 6c 6c 20 62 6f 79>

Tukar Penampan kepada rentetan UTF-8

console.log(bufferOriginal.toString(&#39;utf8&#39;)) // All work and no play makes Jack a dull boy

.toString() bukan satu-satunya cara untuk menukar penimbal kepada rentetan. Selain itu, secara lalai, ia ditukar kepada rentetan format utf-8.

Cara lain untuk menukar penimbal kepada rentetan ialah menggunakan StringDecoder modul teras daripada API Node.js. Modul

string_decoder menyediakan API untuk menyahkod Buffer objek ke dalam rentetan dengan cara yang mengekalkan aksara UTF-8 dan UTF-16 berbilang bait yang dikodkan. Alternatif kepada contoh di atas ialah:

const { StringDecoder } = require(&#39;string_decoder&#39;)
const decoder = new StringDecoder(&#39;utf8&#39;)

let bufferOriginal = Buffer.from(JSON.parse(json).data)
console.log(decoder.write(bufferOriginal)) // All work and no play makes Jack a dull boy
console.log(decoder.end(bufferOriginal)) // All work and no play makes Jack a dull boy

Apabila tika Buffer ditulis kepada tika StringDecoder, penimbal dalaman digunakan untuk memastikan rentetan yang dinyahkod tidak mengandungi sebarang polinomial yang tidak lengkap . Ini disimpan dalam penimbal sehingga panggilan seterusnya ke stringDecoder.write() atau kali seterusnya stringDecoder.end() dipanggil.

Untuk lebih banyak pengetahuan berkaitan pengaturcaraan, sila lawati: Video Pengaturcaraan! !

Atas ialah kandungan terperinci Bagaimana untuk menukar penimbal dalam Nodejs kepada format JSON dan rentetan UTF-8?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:juejin.cn. Jika ada pelanggaran, sila hubungi admin@php.cn Padam