节点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();
你的代码有几个问题。
- 它是
utf8
,而不是在Node.js中的utf-8
,因此它不能工作。 - 该网站返回
Windows-1250
,但你处理它为utf-8
。 这也不行。 - Node.js不支持
Windows-1250
编码,所以这不会使用纯Node.js,无论你做什么(除非你要转换原始字节,但我不会build议,由于显而易见的原因) 。
所以,简而言之:如果没有额外的图书馆,你想要的是(几乎)不可能的。 基本上,你已经find了路要走( iconv
),但是你写道还有一些额外的问题。 正如你没有说这些问题是什么,我只能给你的通用build议,你的代码应该看起来有点像这样:
converter = new iconv.Iconv('windows-1250', 'utf8'); data = converter.convert(data).toString();
希望这可以帮助…