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

青灯夜游
Lepaskan: 2021-08-26 10:25:07
ke hadapan
5705 orang telah melayarinya

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')
Salin selepas log masuk

Selepas v6.0, untuk mencipta contoh penimbal baharu:

let newBuff = Buffer.from('I Love You')
Salin selepas log masuk

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
  ]
}
*/
Salin selepas log masuk

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>
Salin selepas log masuk

Tukar Penampan kepada rentetan UTF-8

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

.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
Salin selepas log masuk

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!

Label berkaitan:
sumber:juejin.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan