Was tun, wenn die Abfrageergebnisse von nodejs verstümmelt sind?

PHPz
Freigeben: 2023-04-26 09:25:37
Original
640 Leute haben es durchsucht

In Node.js stoßen wir häufig auf das Problem verstümmelter Abfrageergebnisse. Der Hauptgrund für dieses Problem liegt darin, dass der Server in Node.js standardmäßig die UTF-8-Kodierung verwendet, die Datenbank jedoch standardmäßig die GBK-Kodierung. Daher werden nach der Ausführung des Abfragevorgangs verstümmelte Zeichen angezeigt. In diesem Artikel wird ausführlich beschrieben, wie das Problem verstümmelter Abfrageergebnisse in Node.js gelöst werden kann.

1. UTF-8- und GBK-Kodierung verstehen

UTF-8-Kodierung ist eine bytekodierte Unicode-Kodierungsmethode. Diese Kodierungsmethode ist derzeit die am weitesten verbreitete Unicode-Kodierungsmethode. Sie verwendet Einzelbyte-, Doppelbyte- und Drei-Byte-Kodierungen unterschiedlicher Länge zur Darstellung von Zeichen.

GBK-Kodierung ist eine Kodierungsmethode wie ASCII-Code. Sie verwendet Doppelbyte-Kodierung und kann maximal 21886 chinesische Zeichen aufnehmen. Die GBK-Kodierung wurde ursprünglich von Microsoft entwickelt und später vom National Bureau of Standards als chinesischer Kodierungsstandard bezeichnet.

2. Lösung

  1. Legen Sie den Zeichensatz des Antwortheaders fest

Beim Ausführen von Abfragevorgängen können wir den Zeichensatz des Antwortheaders festlegen, damit die Abfrageergebnisse korrekt analysiert werden können. Im Folgenden finden Sie einen Beispielcode zum Festlegen des Antwortheader-Zeichensatzes:

res.writeHead(200, {"Content-Type": "text/html;charset=utf-8"});
Nach dem Login kopieren

Hinweis: Obwohl diese Methode das Problem verstümmelter Zeichen lösen kann, ist sie nicht die beste Lösung. Sofern keine besonderen Umstände vorliegen, sollten wir diese Methode im Allgemeinen nicht verwenden.

  1. Legen Sie den Verbindungszeichensatz fest

Wir können den Verbindungszeichensatz auf UTF-8 einstellen, bevor wir eine Verbindung zur Datenbank herstellen. Das Folgende ist ein Beispielcode zum Festlegen des Verbindungszeichensatzes:

var connection = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: '',
    database:'test',
    port: 3306,
    charset : 'utf8mb4'
});
Nach dem Login kopieren

Hinweis: Diese Methode muss jedes Mal festgelegt werden, wenn Sie eine Verbindung zur Datenbank herstellen, was problematischer ist.

  1. Stellen Sie den Datenbankzeichensatz ein

Wir können den Datenbankzeichensatz beim Erstellen der Datenbank auf UTF-8 festlegen. Im Folgenden finden Sie einen Beispielcode zum Festlegen des Datenbankzeichensatzes:

CREATE DATABASE my_db
DEFAULT CHARACTER SET utf8mb4
DEFAULT COLLATE utf8mb4_general_ci;
Nach dem Login kopieren

Hinweis: Diese Methode muss jedes Mal festgelegt werden, wenn die Datenbank erstellt wird, und ist auf weniger Szenarien anwendbar.

  1. Ändern Sie die Konfigurationsdatei my.cnf

Wir können die Konfigurationsdatei my.cnf ändern und den Standardzeichensatz der Datenbank auf UTF-8 festlegen. Das Folgende ist ein Beispiel für die Änderung der Konfigurationsdatei 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
Nach dem Login kopieren

Hinweis: Diese Methode ist relativ komplex und erfordert eine Änderung der Konfigurationsdatei, was sich auf andere Konfigurationen auswirken kann.

3. Zusammenfassung

Die oben genannten Methoden sind mehrere Methoden, um das Problem verstümmelter Node.js-Abfrageergebnisse zu lösen. Wählen Sie entsprechend den tatsächlichen Bedürfnissen und der Umgebung eine Methode, die zu Ihnen passt.

Das obige ist der detaillierte Inhalt vonWas tun, wenn die Abfrageergebnisse von nodejs verstümmelt sind?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!