Heim >Web-Frontend >Front-End-Fragen und Antworten >Was tun, wenn chinesische Knoten-utf8-Zeichen verstümmelt sind?
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.
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');
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.
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.
** 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')
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!