精华 完整探测一个未知页面的文本编码
发布于 1个月前 作者 fengmk2 566 次浏览 来自 分享

写过爬虫的同学,都会遇到 “body怎么是乱码” 的类似问题。结合 charsetjschardet 两个模块,可以完整地探测出一个页面的具体文本编码。

废话不多说了,上代码 encoding.js:

var urllib = require('urllib');
var charset = require('charset');
var jschardet = require('jschardet');

var url = process.argv[2] || 'http://www.taobao.com';

urllib.request(url, function (err, body, res) {
  if (err) throw err;
  var encoding = charset(res, body);
  console.log('detect %j from charset', encoding);
  if (!encoding) {
    encoding = jschardet.detect(body).encoding;
    console.log('detect %j from jschardet', encoding);
  }
});

运行结果:

$ node encoding.js http://www.tmall.com
detect "gbk" from charset

$ node encoding.js http://tmall.com
detect null from charset
detect "ascii" from jschardet
6 回复

找不到一个headers 和 meta 都没有编码的页面,大家可以找找看。

哈哈,错别字哦 - boody,处女座的命啊

啊,是什么原理? 不知道编码也能够检测。

回到顶部