精品 完整探测一个未知页面的文本编码
 发布于 11 年前  作者 fengmk2  8413 次预览  最后一次回复是 11 年前  来自 分享 

写过爬虫的同学,都会遇到 “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 回复
fengmk2

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

yaochun

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

think2011

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