Perkara yang perlu dilakukan jika hasil pertanyaan nodejs bercelaru

PHPz
Lepaskan: 2023-04-26 09:25:37
asal
640 orang telah melayarinya

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"});
Salin selepas log masuk

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

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

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

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!

sumber:php.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
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!