Ich versuche, einige Daten von einem webpage mit Nodejs zu kratzen, aber ich habe Probleme mit der Zeichenkodierung. Die Webseite besagt, dass es Codierung ist: <meta http-equiv="Content-Type" content="text/html; charset=windows-1250">
Und wenn ich es mit Chrom durchsuchen, setzt er Codierung auf Windows-1250 und alles sieht gut aus.Korrekte Zeichenfolge von windows-1250 codierte Webseite mit node.js
Da es keine Windows-1250 Encodierung/Decodierung für Streams in Node gibt (und UTF8 hat nicht funktioniert), fand ich ein iconv-lite-Paket, das in der Lage sein sollte, zwischen verschiedenen Kodierungen leicht zu konvertieren. Aber ich bekomme immer noch falsche Zeichen, nachdem ich die Antwort in eine Datei gespeichert habe (oder in die Konsole ausgegeben habe). Ich probierte auch verschiedene Kodierungen, native Knoten Buffer-Kodierungen, Kopfzeilen auf das gleiche wie das, was ich in chrome (Accept-Charset': 'ISO-8859-1,utf-8;q=0.7,*;q=0.3
), aber nichts scheint richtig zu funktionieren.
Sie können den ganzen Code hier sehen https://gist.github.com/4110999.
Ich vermisse etwas Grundlegendes hinsichtlich, wie die Kodierung funktioniert, also würde irgendeine Hilfe, wie man die Daten mit korrekten Buchstaben erhält, geschätzt.
EDIT:
Auch das Node-Iconv-Paket ausprobiert, falls es ein Paketproblem ist. Geändert Linie 51 zu:
var decoder = new Iconv_native('WINDOWS-1250', 'UTF-8');
var decoded = decoder.convert(body).toString();
aber immer noch die gleichen Ergebnisse.
Hallo, ich ging auch den Code durch und es scheint, dass die Kodierungen als Synonyme organisiert sind, also 1250 == win1250 == windows1250. Ich habe es trotzdem versucht und es gibt die gleichen Ergebnisse. win1251 funktioniert auch nicht, das Ergebnis ist anders, aber Nicht-ASCII-Zeichen sind immer noch Kauderwelsch. – aocenas