问题
当我使用fs.readFile来读取网页内容后,输出下面的乱码内容。
这是错误代码:
fs.readFile('./index.html','binary',(err,data)=>{
if(err) {
reject(err)
}else {
resolve(data)
}
})
问题分析
这是很明显的编码问题,如果小伙伴们也遇到类似乱码问题,第一时间要想到的就是编码了,这里是因为我用了 binary 编码。
知识点
Node.js读取文件函数语法如下:
fs.readFile (filename,[encoding],[callback(err,data)])
- filename(必选),表示要读取的文件名。
- encoding(可选),表示文件的字符编码。
- callback 是回调函数,用于接收文件的内容。
解决
了解了知识点后,就发现 fs.readFile 这个API的第二个参数是用于字符编码的,这里我读取的是一个网页,所以需要改成 utf-8 编码格式。
代码如下:
fs.readFile('./index.html','utf-8',(err,data)=>{
if(err) {
reject(err)
}else {
resolve(data)
}
})
修改后效果: