Nodejs报废的内容没有正确解码(奇怪的问号字符)

问题描述:

我用Nodejs从某个网站上删除内容。该网站是西班牙文,因此它包含许多特殊字符,如á, é, í, ó, ú, ...等。Nodejs报废的内容没有正确解码(奇怪的问号字符)

当我查看脚本报废的内容时,特殊字符显示为“ ”(黑色方形菱形内的问号)。为了解决问题,我遇到了类似的SO问题:Module request how to properly retrieve accented characters? � � �,所以我应用了建议的解决方案:我使用iconv.decode(new Buffer(html), "ISO-8859-1");来尝试正确解码字符。这一次,特殊字符开始出现的�

下面是我的代码的摘录:

var request = require('request'); 

request('http://www.website.com/foo/bar/', function(err, resp, html) { 
    if (err) { 
    console.log("Error!"); 
    } 

    html = iconv.decode(new Buffer(html), "ISO-8859-1"); 

    $ = cheerio.load(html); 

    $('.x1').each(function() { 

    url = ($(this).find('.ee').attr('src')); 

    if (typeof(url) !== 'string') { 
     return true; // jump to next iteration 
    } 

    url = url.replace("/fp/", "/fg/"); 
    console.log("Foto = " + url); 


    textData = ($(this).find('.tx').text()); 
    console.log("textData = " + textData); // This variable contains the weird characters 

什么我缺少为了正确scrappe内容与这些特殊字符á, é, í, ó, ú, ...任何想法?

UPDATE: 我也用binary代替ISO-8859-1尝试和奇怪的字符开始出现的�

+1

在你的链接问题中,有关于设置'encoding:binary'的注释。你尝试过吗? – nilobarp

+0

@nilobarp我刚刚更新了我的问题 – Xar

我终于得到它与binary格式工作。我也不得不做一些改变。从这:

request('http://www.website.com/foo/bar/', function(err, resp, html) { 

要这样:

var requestOptions = { 
    uri: 'http://www.website.com/foo/bar/', 
    encoding: null 
    }; 

    request.get(requestOptions,function(err, resp, html) { 

所以基本上我没有设置为null请求encoding选项。