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
尝试和奇怪的字符开始出现的�
答
我终于得到它与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
选项。
在你的链接问题中,有关于设置'encoding:binary'的注释。你尝试过吗? – nilobarp
@nilobarp我刚刚更新了我的问题 – Xar