Rumah  >  Artikel  >  hujung hadapan web  >  penukaran set aksara nodejs

penukaran set aksara nodejs

WBOY
WBOYasal
2023-05-13 17:31:381255semak imbas

Node.js ialah persekitaran berjalan JavaScript sebelah pelayan yang sangat popular Semasa menulis aplikasi Node.js, penukaran set aksara sudah semestinya diperlukan. Apabila berurusan dengan sistem Cina, Jepun, Korea dan lain-lain, penukaran set aksara diperlukan, yang membolehkan kami mengendalikan teks dengan betul dalam pelbagai format pengekodan.

Dalam artikel ini, kami akan memperkenalkan penukaran set aksara dalam Node.js dan cara menggunakan perpustakaan iconv untuk penukaran pengekodan.

1. Gambaran keseluruhan set aksara

Dalam komputer, set aksara ialah skema yang memetakan aksara kepada kod berangka. Dalam aplikasi praktikal, kami biasanya menggunakan pengekodan aksara seperti ASCII, Unicode dan UTF-8.

ASCII (Kod Standard Amerika untuk Pertukaran Maklumat, Kod Standard Amerika untuk Pertukaran Maklumat) ialah salah satu pengekodan aksara terawal Ia hanya menyokong bahasa Inggeris, nombor dan sebilangan kecil aksara khas. Pengekodan ASCII mempunyai sejumlah 128 aksara, yang diwakili oleh 7 bit binari, dengan bit tertinggi ialah 0. Pengekodan ASCII kemudiannya dikembangkan untuk menyokong lebih banyak set aksara, seperti Latin-1, siri ISO-8859, dsb.

Unicode ialah skim pengekodan aksara bersatu secara global yang merangkumi semua aksara dalam pelbagai bahasa di seluruh dunia dan memberikan kod unik kepada mereka. Pengekodan Unicode mempunyai sejumlah 1,114,112 aksara, yang mana aksara antara 0x0000 dan 0xFFFF sepadan dengan pengekodan 16-bit, dipanggil aksara Asas Satah Berbilang Bahasa (BMP) dan aksara antara 0x010000 dan 0x10FFFF sepadan dengan pengekodan 32-bit; Watak rata bantu. Pengekodan Unicode mempunyai pelbagai kaedah perwakilan, seperti UTF-8, UTF-16, dsb.

UTF-8 (Format Transformasi Unikod-8, Format Transformasi Unikod 8-bit) ialah pengekodan Unikod panjang boleh ubah yang boleh menggunakan 1~4 bait untuk mewakili aksara Ia menyokong semua aksara Unikod. Dalam pengekodan UTF-8, aksara ASCII masih diwakili oleh satu bait, manakala aksara bukan ASCII seperti aksara Cina diwakili oleh 2 hingga 3 bait Oleh itu, ia serasi dengan pengekodan ASCII dan juga boleh menyimpan aksara dalam pelbagai bahasa.

2. Penukaran set aksara Node.js

Node.js secara asalnya menyediakan kelas Penampan, yang boleh menyimpan data binari dalam ingatan dan biasanya digunakan dalam senario seperti penghantaran rangkaian dan pembacaan fail dan menulis. Apabila kita membaca data perduaan daripada sumber luaran, kita perlu menyahkod set aksara dan menukarkan data perduaan kepada rentetan yang boleh dibaca apabila kita menukar rentetan itu kepada data perduaan, kita perlu mengekodnya dan menukar aksara itu adalah data perduaan;

Node.js menyediakan beberapa modul penukaran set aksara terbina dalam, seperti buffer.toString(), Buffer.from(), dsb., yang boleh melakukan penukaran pengekodan separa data binari. Contohnya:

const buf = Buffer.from('中文');
console.log(buf.toString('utf8')); // 中文
console.log(buf.toString('ascii')); // ��w�
console.log(buf.toString('base64')); // 5Lit5paH

Dalam contoh di atas, kami menukar rentetan 'Cina' kepada objek Penampan dan menggunakan kaedah toString() untuk menukarnya kepada format pengekodan lain. Hasil pengekodan utf8 adalah betul, tetapi pengekodan ascii dan pengekodan base64 adalah salah.

Node.js menggunakan pengekodan utf8 secara lalai untuk penukaran rentetan Jika set aksara yang hendak ditukar tidak serasi dengan utf8, anda perlu menggunakan pustaka pihak ketiga seperti iconv untuk penukaran set aksara.

3. Gunakan perpustakaan iconv untuk penukaran set aksara

iconv ialah perpustakaan C sumber terbuka percuma untuk menukar antara set aksara yang berbeza. Terdapat modul NPM yang dipanggil iconv-lite dalam Node.js, yang merupakan pakej perpustakaan iconv dan menyediakan fungsi penukaran set aksara berprestasi tinggi.

Seterusnya, kami akan memperkenalkan cara menggunakan iconv-lite untuk penukaran set aksara.

1. Pasang iconv-lite

Mula-mula, kita perlu memasang iconv-lite.

npm install iconv-lite

2. Penukaran pengekodan rentetan

Menggunakan iconv-lite untuk melakukan penukaran pengekodan adalah sangat mudah, kita hanya perlu memanggil kaedah yang sepadan. Sebagai contoh, kami menukar rentetan berkod GB2312 kepada pengekodan UTF-8:

const iconv = require('iconv-lite');
const str = '中文字符串';
const buf = iconv.encode(str, 'gb2312');
const str2 = iconv.decode(buf, 'utf8');
console.log(str2); // 中文字符串

Dalam contoh di atas, kami mula-mula menggunakan kaedah iconv.encode untuk menukar rentetan berkod GB2312 kepada objek Penampan, dan kemudian gunakan Kaedah iconv.decode menukarkan objek Penampan menjadi rentetan berkod UTF-8. Rentetan yang ditukar ialah rentetan Cina yang betul.

3. Penukaran pengekodan strim

Apabila memproses fail besar, anda mungkin perlu menggunakan strim untuk penukaran pengekodan. Di sini kita boleh menggunakan perpustakaan strim iconv-lite yang disediakan oleh iconv-lite untuk melaksanakan penukaran pengekodan strim dengan mudah. Sebagai contoh, kami menukar fail yang dikodkan Shift_JIS kepada pengekodan UTF-8:

const iconv = require('iconv-lite');
const fs = require('fs');
const iconvStream = iconv.decodeStream('Shift_JIS');
const inputStream = fs.createReadStream('shift-jis-file.txt');
const outputStream = fs.createWriteStream('utf8-file.txt');
inputStream.pipe(iconvStream).pipe(outputStream);

Dalam contoh di atas, kami mula-mula mencipta strim boleh dibaca, membaca fail yang dikodkan Shift_JIS, dan kemudian mencipta strim boleh ditulis, Menulis UTF -8 fail yang dikodkan. Pada masa yang sama, kami mencipta strim yang dikodkan sebagai Shift_JIS melalui kaedah iconv.decodeStream dan merantainya dengan strim boleh dibaca dan strim boleh tulis untuk mencapai penukaran pengekodan strim.

4. Ringkasan

Dalam artikel ini, kami memperkenalkan penukaran set aksara dalam Node.js dan cara menggunakan perpustakaan iconv-lite untuk penukaran pengekodan. Penukaran set aksara ialah fungsi yang sangat diperlukan apabila berurusan dengan sistem Cina, Jepun, Korea dan lain-lain penggunaan penukaran set aksara dengan berkesan boleh mengelakkan masalah seperti aksara yang bercelaru. Kami berharap artikel ini membantu pembaca lebih memahami penukaran set aksara dalam Node.js.

Atas ialah kandungan terperinci penukaran set aksara nodejs. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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