Nodejs报废内容未正确解码(奇怪的问号caracters)

时间:2017-09-20 07:02:04

标签: javascript node.js

我正在使用Nodejs从某个网站上删除内容。所述网站是西班牙语,因此它包含许多特殊字符,如á, é, í, ó, ú, ...等。

当我查看我的脚本已废弃的内容时,特殊字符显示为“ ”(黑色方形菱形内的问号)。为了获得解决方案,我遇到了类似的问题: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

为了正确地删除含有这些特殊字符á, é, í, ó, ú, ...的内容,我对缺少的内容有所了解吗?

更新 我也尝试使用binary代替ISO-8859-1,奇怪的字符开始显示为�

1 个答案:

答案 0 :(得分:1)

我终于使用了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) {

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