节点js的buffer.toString()编码问题

即时通讯parsing使用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(); 

你的代码有几个问题。

  1. 它是utf8 ,而不是在Node.js中的utf-8 ,因此它不能工作。
  2. 该网站返回Windows-1250 ,但你处理它为utf-8 。 这也不行。
  3. Node.js不支持Windows-1250编码,所以这不会使用纯Node.js,无论你做什么(除非你要转换原始字节,但我不会build议,由于显而易见的原因) 。

所以,简而言之:如果没有额外的图书馆,你想要的是(几乎)不可能的。 基本上,你已经find了路要走( iconv ),但是你写道还有一些额外的问题。 正如你没有说这些问题是什么,我只能给你的通用build议,你的代码应该看起来有点像这样:

 converter = new iconv.Iconv('windows-1250', 'utf8'); data = converter.convert(data).toString(); 

希望这可以帮助…