我正在尝试使用 nodejs 从网页中抓取一些数据,但我遇到了字符编码问题。该网页指出它的编码是:
<meta http-equiv="Content-Type" content="text/html; charset=windows-1250">
当我用chrome浏览它时,它将编码设置为windows-1250,一切看起来都很好。
由于节点中的流没有 windows-1250 编码/解码(并且 utf8 不起作用),我找到了一个 iconv-lite 包,它应该能够在不同的编码之间轻松转换。但是在将响应保存到文件(或输出到控制台)后,我仍然会得到错误的字符。我还尝试了不同的编码、本机节点缓冲区编码、将标头设置为与我在 chrome ( Accept-Charset': 'ISO-8859-1,utf-8;q=0.7,*;q=0.3
) 中看到的相同,但似乎没有任何工作正常。
你可以在这里看到整个代码https://gist.github.com/4110999。
我想我缺少有关编码如何工作的一些基本知识,因此将不胜感激有关如何获取具有正确字符的数据的任何帮助。
编辑:
还尝试了 node-iconv 包,以防它是包问题。将第 51 行更改为:
var decoder = new Iconv_native('WINDOWS-1250', 'UTF-8');
var decoded = decoder.convert(body).toString();
但仍然得到相同的结果。