Próbuję zeskanować niektóre dane z webpage z nodejs, ale mam problemy z kodowaniem znaków. Strona podaje, że kodowanie to: <meta http-equiv="Content-Type" content="text/html; charset=windows-1250">
A kiedy przeglądam to z chromem, ustawia kodowanie na Windows-1250 i wszystko wygląda dobrze.Uzyskiwanie poprawnego ciągu z zakodowanej strony Windows-1250 za pomocą node.js
Ponieważ nie ma kodowania/dekodowania windows-1250 dla strumieni w węźle (i utf8 nie działało), znalazłem pakiet iconv-lite, który powinien być w stanie łatwo konwertować pomiędzy różnymi kodowaniami. Ale nadal otrzymuję błędne znaki po zapisaniu odpowiedzi w pliku (lub wyprowadzeniu na konsolę). Próbowałem także różnych kodowań, kodowania buforów macierzystych węzłów, ustawiając nagłówki na takie same, jak to, co widzę w chrome (Accept-Charset': 'ISO-8859-1,utf-8;q=0.7,*;q=0.3
), ale nic nie działa poprawnie.
Możesz zobaczyć cały kod tutaj https://gist.github.com/4110999.
Przypuszczam, że brakuje mi czegoś podstawowego co do sposobu kodowania, więc pomoc w uzyskaniu danych z poprawnymi znakami byłaby doceniana.
EDYTOWANIE:
Próbowano również pakiet node-iconv w przypadku, gdy jest to problem z pakietem. Zmieniono linię 51 na:
var decoder = new Iconv_native('WINDOWS-1250', 'UTF-8');
var decoded = decoder.convert(body).toString();
ale nadal uzyskuję takie same wyniki.
Hi, I udał się za pomocą kodu i wydaje się, że kodowania są zorganizowane jako synonimy, więc 1250 == win1250 == Windows1250. Próbowałem to mimo wszystko i daje takie same wyniki. win1251 też nie działa, wynik jest inny, ale znaki spoza ASCII nadal są bełkotem. – aocenas