我正在解析使用Windows-1250字符集的网站,过去3天我无法让我的页面以相同的编码显示数据。我的猜测是问题在于从缓冲区或缓冲区获取数据。 我尝试安装IConv模块,但是出现了一系列全新的问题,所以我想知道是否有办法在不使用iconv的情况下解决这个问题。
基本上,我从网站上获得“ANDRIJAŠEVCI”,在下面的代码之后我得到“ANDRIJA?EVCI”
var options2 = {
host: 'vred.hzinfra.hr',
path: '/hzinfo/default.asp?Category=hzinfo&Service=vred3',
headers: {"Accept-Charset": "Windows-1250,utf-8;ISO-8859-3,utf-8;ISO-8859-2,utf-8", "Content-Type": "text/html; charset=ISO-8859-2" }
}
var request2 = http.request(options2, function (res){
var data = new Buffer(0,'utf-8');
res.on('data', function (chunk) {
data = Buffer.concat([data,chunk]);
});
res.on('end', function () {
console.log(data.toString('utf-8'));
});
});
request2.end();
答案 0 :(得分:2)
您的代码中存在多个问题。
utf8
,而不是Node.js中的utf-8
,因此无法正常工作。Windows-1250
,但您将其作为utf-8
处理。这也行不通。Windows-1250
编码,所以无论你做什么,这都不能使用纯Node.js(除了你要转换原始字节,但我不建议出于显而易见的原因)。所以,简而言之:如果没有额外的图书馆,你想要的是(几乎不可能)。基本上,你已经找到了前进的方法(iconv
),但你写道还有其他一些问题。由于你没有说出这些问题是什么,我只能给你一个非常通用的建议,你的代码应该看起来像这样:
converter = new iconv.Iconv('windows-1250', 'utf8');
data = converter.convert(data).toString();
希望这会有所帮助......