我取这个页面与该请求库中的Node.js,并使用解析身体cheerio。
调用$.html()已解析的响应正文,发现该页面的title属性为:
$.html()
<title>Le Relais de l'Entrec?te</title>
…什么时候应该:
<title>Le Relais de l'Entrecôte</title>
我尝试将请求库的选项设置为include encoding: 'utf8',但这似乎并没有改变任何东西。
encoding: 'utf8'
如何保留这些字符?
该页面似乎是用iso-8859-1编码的。您需要request通过传递encoding: null并使用诸如node- iconv之类的东西来告诉您退回未编码的缓冲区。
request
encoding: null
如果要编写通用搜寻器,则必须弄清楚如何检测遇到的每个页面的编码以正确对其进行解码,否则以下情况应适用于您的情况:
var request = require('request'); var iconv = require('iconv'); request.get({ url: 'http://www.relaisentrecote.fr', encoding: null, }, function(err, res, body) { var ic = new iconv.Iconv('iso-8859-1', 'utf-8'); var buf = ic.convert(body); var utf8String = buf.toString('utf-8'); // .. do something with utf8String .. });