Rumah >hujung hadapan web >Soal Jawab bahagian hadapan >Perkara yang perlu dilakukan jika hasil pertanyaan nodejs bercelaru

Perkara yang perlu dilakukan jika hasil pertanyaan nodejs bercelaru

PHPz
PHPzasal
2023-04-26 09:06:27704semak imbas

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

  1. Tetapkan set aksara pengepala respons

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.

  1. Tetapkan set aksara sambungan

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.

  1. Tetapkan set aksara pangkalan data

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.

  1. Ubah suai fail konfigurasi my.cnf

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!

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