节点请求ISO-8859-1自节点4起不起作用

时间:2015-10-20 19:25:48

标签: node.js encoding request iso-8859-1

我得到一个返回latin1的网页 screenshot from browser (response from the website)

它与iconv-lite一起用于节点0.10。但现在用

$ node -v
v4.1.1

I can't use iconv-lite with the latest node version。所以我试着回到Iconv:

var Iconv  = require('iconv').Iconv;
...
  request(url, {
        uri: url,
        method: 'GET'}, function (err, resp, body) {
        var ic = new Iconv('ISO-8859-1', 'utf-8');
        var buf = ic.convert(body);
        body = buf.toString('utf-8');

但这导致�ber应该是Über

我不知道如何解决这个问题。欢迎任何提示。

1 个答案:

答案 0 :(得分:7)

尝试latin1而不是iso-8859-1。这是文档所说的用于从iso-8859-1转换为utf-8 ...

的内容

编辑:你还必须将请求编码设置为'二进制'它的工作原理。

编辑2:刚刚意识到,在二进制请求时你甚至不需要Iconv。

request(url, {... encoding: 'binary' ...},...
console.log(body)