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
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"});
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.
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' });
Hinweis: Diese Methode muss jedes Mal festgelegt werden, wenn Sie eine Verbindung zur Datenbank herstellen, was problematischer ist.
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;
Hinweis: Diese Methode muss jedes Mal festgelegt werden, wenn die Datenbank erstellt wird, und ist auf weniger Szenarien anwendbar.
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
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!