Rumah >hujung hadapan web >Soal Jawab bahagian hadapan >Perkara yang perlu dilakukan jika hasil pertanyaan nodejs bercelaru
Dalam Node.js, kami sering menghadapi masalah hasil pertanyaan yang bercelaru. Sebab utama masalah ini ialah dalam Node.js, pelayan menggunakan pengekodan UTF-8 secara lalai, tetapi pangkalan data menggunakan pengekodan GBK secara lalai. Oleh itu, selepas melaksanakan operasi pertanyaan, aksara bercelaru akan muncul. Artikel ini akan memperkenalkan secara terperinci cara menyelesaikan masalah hasil pertanyaan bercelaru dalam Node.js.
1 Fahami pengekodan UTF-8 dan GBK
Pengekodan UTF-8 ialah kaedah pengekodan Unicode yang dikodkan bait. Kaedah pengekodan ini pada masa ini merupakan kaedah pengekodan Unicode yang paling banyak digunakan Ia menggunakan pengekodan satu bait, dua bait dan tiga bait dengan panjang yang berbeza untuk mewakili aksara.
Pengekodan GBK ialah kaedah pengekodan seperti kod ASCII Ia menggunakan pengekodan dua bait dan boleh memuatkan maksimum 21886 aksara Cina. Pengekodan GBK pada asalnya dibangunkan oleh Microsoft dan kemudiannya ditetapkan sebagai standard pengekodan Cina oleh Biro Piawaian Kebangsaan.
2. Penyelesaian
Apabila melakukan operasi pertanyaan, kita boleh menetapkan set aksara pengepala respons supaya hasil Pertanyaan dapat dihuraikan dengan betul. Berikut ialah contoh kod untuk menetapkan set aksara pengepala respons:
res.writeHead(200, {"Content-Type": "text/html;charset=utf-8"});
Nota: Walaupun kaedah ini boleh menyelesaikan masalah aksara yang bercelaru, ia bukanlah penyelesaian terbaik. Melainkan terdapat keadaan khusus, kita seharusnya tidak menggunakan kaedah ini.
Kami boleh menetapkan set aksara sambungan kepada UTF-8 sebelum menyambung ke pangkalan data. Berikut ialah contoh kod untuk menetapkan set aksara sambungan:
var connection = mysql.createConnection({ host: 'localhost', user: 'root', password: '', database:'test', port: 3306, charset : 'utf8mb4' });
Nota: Kaedah ini perlu ditetapkan setiap kali anda menyambung ke pangkalan data, yang lebih menyusahkan.
Kami boleh menetapkan set aksara pangkalan data kepada UTF-8 apabila mencipta pangkalan data. Berikut ialah contoh kod untuk menetapkan set aksara pangkalan data:
CREATE DATABASE my_db DEFAULT CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_general_ci;
Nota: Kaedah ini perlu ditetapkan setiap kali pangkalan data dicipta dan boleh digunakan untuk senario yang lebih sedikit.
Kami boleh mengubah suai fail konfigurasi my.cnf dan menetapkan set aksara lalai pangkalan data kepada UTF-8. Berikut ialah contoh mengubah suai fail konfigurasi my.cnf:
[mysqld] init_connect='SET collation_connection = utf8mb4_unicode_ci' init_connect='SET NAMES utf8mb4' character-set-server=utf8mb4 collation-server=utf8mb4_unicode_ci
Nota: Kaedah ini agak rumit dan memerlukan pengubahsuaian fail konfigurasi, yang mungkin mempunyai kesan pada konfigurasi lain.
3. Ringkasan
Di atas adalah beberapa kaedah untuk menyelesaikan masalah hasil pertanyaan Node.js yang bercelaru. Mengikut keperluan dan persekitaran sebenar, pilih kaedah yang sesuai dengan anda.
Atas ialah kandungan terperinci Perkara yang perlu dilakukan jika hasil pertanyaan nodejs bercelaru. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!