Node.js 节点请求ISO-8859-1自节点4起不工作

Node.js 节点请求ISO-8859-1自节点4起不工作,node.js,encoding,request,iso-8859-1,Node.js,Encoding,Request,Iso 8859 1,我得到一个返回拉丁语1的网页 它与节点0.10的iconv lite一起工作。但是现在 $ node -v v4.1.1 。所以我试着回到Iconv: var Iconv = require('iconv').Iconv; ... request(url, { uri: url, method: 'GET'}, function (err, resp, body) { var ic = new Iconv('ISO-8859-1', 'u

我得到一个返回拉丁语1的网页

它与节点0.10的iconv lite一起工作。但是现在

$ node -v
v4.1.1
。所以我试着回到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
它应该在哪里


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

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

编辑:您还必须将请求编码设置为“二进制”才能工作

编辑2:刚刚实现,在二进制请求时甚至不需要Iconv

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

我没有解决方案,但我认为您可以重用Iconv实例,而不是一次又一次地为每个请求创建Iconv实例。你查过了吗。当然,这只是测试设置,2。已更改为UTF-8,但问题相同请尝试以下操作:
var buf=ic.convert(缓冲区(body,'binary')
hey@ɦassansin这会导致“ýber”而不是Überthis,结果是
ýberland
i创建了一个简单的测试用例,并找到了解决方案。我已经相应地更新了答案谢谢!我可以肯定,即使没有iconv,它也能正常工作(速度大约快30%!谢谢你,在尝试了几个小时的不同方法后,终于解决了我的相同问题