javascript - Node-Crawler - 如何显示正常字符数据?
问题描述
我正在尝试从包含带有 node.js 的 html 的网站获取一些数据。但是,响应是乱码,例如��ӭǰ���Ա���ʵ�����̣�ѡ��Apple。
谁能告诉我我该怎么做才能解决这个问题?
非常感谢!
我已经尝试如下。
网站 url在此处输入链接描述
const urlLib = require('url');
const dataLib = require('./data');
dataLib.getUrl(website url,(buffer)=>{
console.log('done',buffer.toString('utf-8'));
},()=>{
console.log('error')
})
这是data.js
const urlLib = require('url');
exports.getUrl = function(sUrl, success, error) {
_req(sUrl);
function _req(sUrl){
let obj = urlLib.parse(sUrl);
let mod = null;
if (obj.protocol == 'http:') {
mod = require('http')
} else {
mod = require('https')
}
let req = mod.request({
hostname: obj.hostname,
path: obj.path
}, res => {
if (res.statusCode == 200) {
let arr = [];
res.on('data', (buffer) => {
arr.push(buffer)
});
res.on('end', () => {
let b = Buffer.concat(arr)
success && success(b)
})
} else if (res.statusCode == 301 || res.statusCode == 302) {
_req(res.headers['location'])
} else {
console.log(res.statusCode)
error && error();
}
})
req.on('error', (err) => {
console.log( err)
error && error(err)
})
req.end()
}
}
解决方案
似乎您正在获取数据,但您无法对其进行解码。像��ӭǰ���Ա���ʵ�����̣�ѡ�� 这样的乱码字符通常就是这种情况。
我注意到您指定'utf-8'
为buf.toString()
. 它应该是'utf8'
(不带连字符)。
推荐阅读
- email - 通过电子邮件将 PDF 附件发送到 Google 表格
- java - 使用户注销
- r - 如何识别列表中各列的模式匹配索引
- powerquery - PowerQuery 中的数据转换
- python - KeyError:向电子邮件添加标签时出现 b'X-GM-LABELS' 问题
- winapi - 我正在构建 win32 应用程序,它在截屏时清空剪贴板。但图像没有清空
- awk - 根据第一列的字符将行分配给文件(使用 awk)
- python - pandas str.replace 无法正常工作
- c# - Entity Framework Core 中的种子脚本正在破坏我的迁移
- c - 谁能解释这种语法?字符 *seats[14][7];