http.request()方法返回内容中文乱码问题
写了一段代码想获取传入url页面的title:
exports.getTitleFrom = function getTitleFrom(response,url){
var title;
if(url && url.trim()){
var options = {method:'GET', port:80};
url = url.trim();
if(url.indexOf('http://') == 0) url = url.replace('http://', '');
if(url.indexOf('/') != -1){
options.hostname = url.substring(0, url.indexOf('/'));
options.path = url.substring(url.indexOf('/'));
} else {
options.hostname = url;
}
var req = http.request(options, function(res){
res.on('data', function (chunk) {
var match = chunk.toString().match('<title>[^\0]*</title>');
if(match && match.length > 0){
title = match[0].replace('<title>', '').replace('</title>', '');
console.log('获取到对应的URL与TITLE:');
console.log(url + ' <-> ' + title);
response.send({title : title});
}
});
});
req.on('error', function(e) {
console.log('problem with request: ' + e.message);
});
req.end();
}
}
经测试英文网页没问题,中文也有一些没问题,但是就是另外一些站点如百度、淘宝等返回的内容都是中文乱码的。想请教一下如何解决?
3 回复
var match = chunk.toString().match(’<title>[^\0]*</title>’); 问题在这里,chunk是buffer,不一定是完整的字符串。遇到中文,可能存在一个文字的半个字符丢失的情况,所以乱码咯。
十分感谢!