Node.js cheerio奇怪的字符(西里尔字母)

时间:2016-03-23 20:15:47

标签: javascript node.js cheerio

当我试图解析页面时,我得到了奇怪的字符。

这是我的代码:

var getPageContent = function getPageContent(url, callback) {
    https.get(url, function (res) {
        var data = "";
        res.on('data', function (chunk) {
            data += chunk;
        });
        res.on("end", function () {
            callback(data));
        });
    }).on("error", function () {
        callback(null);
    });
};

getPageContent(url, function (response) {
    var $ = cheerio.load(response, { decodeEntities: false });
    $("div.details-info").each(function() {
        console.log($(this).html());
    });
});

我的结果是:

<span>Ст��атегии</span>
<span>Стратег��и</span>
<span>Стра��егии</span>
<span>Стратегии</span>
<span>Стратегии</span>
...

最奇怪的是,从同一个网址,有时候我会得到这些奇怪的角色,有时我却不会。而且当我从我的电脑上运行它时,它工作正常。我只在服务器上获得这个字符。

1 个答案:

答案 0 :(得分:1)

您可能需要手动将response的字符集转换为UTF-8。您可以使用iconviconv-lite模块执行此操作。 cheerio本身不会自动处理字符集转换。