Heim Web-Frontend Front-End-Fragen und Antworten Was tun, wenn chinesische Knoten-utf8-Zeichen verstümmelt sind?

Was tun, wenn chinesische Knoten-utf8-Zeichen verstümmelt sind?

Feb 08, 2023 am 10:29 AM
node.js utf8

Knoten-utf8-Lösung für verstümmelte chinesische Zeichen: 1. Überprüfen Sie den Typ von „SarchName“ über „typeof“. 2. Verwenden Sie die Methode „Name=iconv.decode(name,‘gbk‘)“, um die Codierung in utf8 zu konvertieren.

Was tun, wenn chinesische Knoten-utf8-Zeichen verstümmelt sind?

Die Betriebsumgebung dieses Tutorials: Windows 10-System, Node v14.16.0-Version, DELL G3-Computer

Was tun, wenn chinesische Node-utf8-Zeichen verstümmelt sind?

  • node.js implementiert die Codierungskonvertierung von GBK in UTF8, eine chinesische verstümmelte Lösung.

Bevor ich dies tat, hatte ich ein Bedürfnis, nämlich den Knoten zu verwenden, um eine Fuzzy-Abfrage von Namen durchzuführen. Tatsächlich ist dies eine einfache Angelegenheit, die nicht einfacher sein kann, aber ich war zwei Tage lang mit diesem Thema beschäftigt.

Aus geschäftlichen Gründen haben wir eine Fuzzy-Abfrage für die neue Funktion durchgeführt.

Zuerst musste ich einen Knoten-HTTP-Dienst einrichten und dann MySQL konfigurieren. Nachdem ich das ORM-Modell etabliert hatte, stieß ich auf etwas Seltsames, als ich mit dem Schreiben von SQL-Anweisungen beginnen wollte, da mein Knoten in utf8 codiert war. Die Datenbank unseres Unternehmens verwendet jedoch die GBK-Kodierung, was zu einem Fehler führte, als ich die Datenabfrage durchführte und die Abfrage fehlschlug. Der Grund waren Kodierungsprobleme.

Dieses Problem ist auch sehr einfach, einfach transkodieren! ! !

Als ich anfing, die Transkodierungsmethode des Baidu-Knotens zu verwenden, stieß ich auf das Plugin iconv-jschardet und ging zu npm, um es auszuprobieren. Ich habe angefangen,

const iconv = require('iconv-jschardet');
SarchName =  iconv.encode(SarchName, 'gbk');
Nach dem Login kopieren

zu verwenden, um die vom Frontend gesendeten Zeichen in GBK-Kodierung umzuwandeln, und war sehr zufrieden.

Das Ergebnis ist immer noch ein Fehler. Aufgrund dieses Fehlers habe ich einen Nachmittag damit verbracht, danach zu suchen. Ich weiß nicht, ob die Konvertierung erfolgreich war, daher habe ich unzählige Methoden ausprobiert, konnte dieses Codierungsproblem jedoch immer noch nicht lösen. Deshalb habe ich darüber nachgedacht, es mit SQL in Binärdateien zu konvertieren, um beim Abfragen beim Schreiben von PHP Fuzzy-Matching zu ermöglichen.

Also habe ich den SarchNamen eingegeben und es stellte sich heraus, dass es Obj war. Ich war sehr verwirrt und dachte, es sollte String sein. Also habe ich es ausgedruckt und gesehen, dass es ein Buffer war. Jetzt wurde mir klar, dass es besser ist, es nicht direkt in String zu konvertieren. Ich habe die Methode Buffer.toString() verwendet, aber es hat immer noch nicht funktioniert, und dann habe ich die Dokumentation durchgesehen. Ich fand heraus, dass es keine GBK-Kodierung gab, was große Kopfschmerzen bereitete.

Was tun, wenn chinesische Knoten-utf8-Zeichen verstümmelt sind?

Dann habe ich es mit ASCII versucht und festgestellt, dass es immer noch nicht funktioniert, also habe ich es mit Binärdatei versucht und es war in Ordnung.

Was tun, wenn chinesische Knoten-utf8-Zeichen verstümmelt sind?

** Die Ausführung der Fuzzy-Abfrage wurde problemlos abgeschlossen. Als die zurückgegebenen Daten gefunden wurden, waren sie immer noch in GBK codiert. Das ist ganz einfach! ! ! ! Konvertieren Sie es dann in utf8

Name=iconv.decode(name,'gbk')
Nach dem Login kopieren

und kehren Sie dann zurück und stellen Sie fest, dass es kein Problem gibt. Dann ist alles in Ordnung.

Nach einer Weile entdeckte jemand anderes einen Fehler und sagte, dass der Name der Person nicht vollständig angezeigt wurde! ! ! !

Infolgedessen tauchte dieses Symbol � in den Namen einiger Personen auf. . . . .

Baidu stellte fest, dass die Dekodierung unvollständig war und es derzeit keine Lösung gibt. . .

Am Ende hatte ich keine andere Wahl, als die Methode indexOf('�') zu verwenden, um die seltenen Zeichen in der Zeichenfolge abzurufen

Dann notieren Sie ihren Status und verwenden Sie PHP, um sie zu transkodieren.

Mit einem Wort, Grube! **

Ergänzung: Bei der GBK-Konvertierung von Node.js in utf8 können einige seltene Zeichen immer noch nicht konvertiert werden, was zu verstümmelten Zeichen führt. Es wird empfohlen, dass Bibliotheken mit GBK nicht zulassen, dass Node Dinge wie die chinesische Transkodierung durchführt und in eine andere Sprache wechselt.

Empfohlenes Lernen: „node.js Video-Tutorial

Das obige ist der detaillierte Inhalt vonWas tun, wenn chinesische Knoten-utf8-Zeichen verstümmelt sind?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Crossplay haben?
1 Monate vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Ein Artikel über Speichersteuerung in Node Ein Artikel über Speichersteuerung in Node Apr 26, 2023 pm 05:37 PM

Der nicht blockierende und ereignisgesteuerte Knotendienst hat den Vorteil eines geringen Speicherverbrauchs und eignet sich sehr gut für die Verarbeitung massiver Netzwerkanforderungen. Unter der Voraussetzung massiver Anfragen müssen Probleme im Zusammenhang mit der „Speicherkontrolle“ berücksichtigt werden. 1. Der Garbage-Collection-Mechanismus und die Speicherbeschränkungen von V8 Js wird von der Garbage-Collection-Maschine gesteuert

Detaillierte grafische Erläuterung des Speichers und des GC der Node V8-Engine Detaillierte grafische Erläuterung des Speichers und des GC der Node V8-Engine Mar 29, 2023 pm 06:02 PM

Dieser Artikel vermittelt Ihnen ein detailliertes Verständnis des Speichers und Garbage Collectors (GC) der NodeJS V8-Engine. Ich hoffe, er wird Ihnen hilfreich sein!

Lassen Sie uns darüber sprechen, wie Sie das beste Node.js-Docker-Image auswählen. Lassen Sie uns darüber sprechen, wie Sie das beste Node.js-Docker-Image auswählen. Dec 13, 2022 pm 08:00 PM

Die Auswahl eines Docker-Images für Node mag trivial erscheinen, aber die Größe und potenziellen Schwachstellen des Images können erhebliche Auswirkungen auf Ihren CI/CD-Prozess und Ihre Sicherheit haben. Wie wählen wir also das beste Node.js-Docker-Image aus?

Wie viele Bytes belegen utf8-codierte chinesische Zeichen? Wie viele Bytes belegen utf8-codierte chinesische Zeichen? Feb 21, 2023 am 11:40 AM

UTF8-kodierte chinesische Zeichen belegen 3 Bytes. Bei der UTF-8-Kodierung entspricht ein chinesisches Zeichen drei Bytes und ein chinesisches Satzzeichen belegt drei Bytes, während bei der Unicode-Kodierung ein chinesisches Zeichen (einschließlich traditionellem Chinesisch) zwei Bytes entspricht. UTF-8 benötigt zur Kodierung jedes Zeichens nur 1 Byte. Für Latein, Griechisch, Kyrillisch und Hebräisch sind 2 Byte erforderlich Codierung.

Lassen Sie uns ausführlich über das File-Modul in Node sprechen Lassen Sie uns ausführlich über das File-Modul in Node sprechen Apr 24, 2023 pm 05:49 PM

Das Dateimodul ist eine Kapselung der zugrunde liegenden Dateioperationen, wie z. B. Lesen/Schreiben/Öffnen/Schließen/Löschen von Dateien, Hinzufügen usw. Das größte Merkmal des Dateimoduls besteht darin, dass alle Methoden zwei Versionen von **synchronem** und **bereitstellen. asynchron**, mit Methoden mit dem Suffix sync sind alle Synchronisationsmethoden, und diejenigen ohne sind alle heterogene Methoden.

Node.js 19 ist offiziell veröffentlicht, lassen Sie uns über seine 6 Hauptfunktionen sprechen! Node.js 19 ist offiziell veröffentlicht, lassen Sie uns über seine 6 Hauptfunktionen sprechen! Nov 16, 2022 pm 08:34 PM

Node 19 wurde offiziell veröffentlicht. Dieser Artikel wird Ihnen eine detaillierte Erklärung der 6 Hauptfunktionen von Node.js 19 geben. Ich hoffe, er wird Ihnen hilfreich sein!

Lassen Sie uns über den GC-Mechanismus (Garbage Collection) in Node.js sprechen Lassen Sie uns über den GC-Mechanismus (Garbage Collection) in Node.js sprechen Nov 29, 2022 pm 08:44 PM

Wie führt Node.js GC (Garbage Collection) durch? Der folgende Artikel führt Sie durch.

Lassen Sie uns über die Ereignisschleife in Node sprechen Lassen Sie uns über die Ereignisschleife in Node sprechen Apr 11, 2023 pm 07:08 PM

Die Ereignisschleife ist ein grundlegender Bestandteil von Node.js und ermöglicht die asynchrone Programmierung, indem sie sicherstellt, dass der Hauptthread nicht blockiert wird. Das Verständnis der Ereignisschleife ist für die Erstellung effizienter Anwendungen von entscheidender Bedeutung. Der folgende Artikel wird Ihnen ein detailliertes Verständnis der Ereignisschleife in Node vermitteln. Ich hoffe, er wird Ihnen hilfreich sein!

See all articles