我正在使用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
,奇怪的字符开始显示为�
答案 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
选项设置为空。