44 lines
986 B
JavaScript
44 lines
986 B
JavaScript
|
|
|
|
var UTF_8 = require('./encoding/utf8');
|
|
var unicode = require('./encoding/unicode');
|
|
var mbcs = require('./encoding/mbcs');
|
|
var iso2022 = require('./encoding/iso2022');
|
|
|
|
var recognisers = [
|
|
new UTF_8,
|
|
new unicode.UTF_16BE,
|
|
new unicode.UTF_16LE,
|
|
new unicode.UTF_32BE,
|
|
new unicode.UTF_32LE,
|
|
new mbcs.sjis,
|
|
new mbcs.big5,
|
|
new mbcs.euc_jp,
|
|
new mbcs.euc_kr,
|
|
new mbcs.gb_18030,
|
|
new iso2022.ISO_2022_JP,
|
|
new iso2022.ISO_2022_KR,
|
|
new iso2022.ISO_2022_CN
|
|
];
|
|
|
|
module.exports.detect = function(buffer) {
|
|
|
|
var det = {
|
|
fRawInput: buffer,
|
|
fRawLength: buffer.length,
|
|
fInputBytes: buffer,
|
|
fInputLen: buffer.length
|
|
};
|
|
|
|
var matches = [];
|
|
for (var i = recognisers.length - 1; i >= 0; i--) {
|
|
var recogniser = recognisers[i];
|
|
matches.push(rec.match(det));
|
|
};
|
|
|
|
matches.sort(function(a, b) {
|
|
return a.confidence - b.confidence;
|
|
});
|
|
|
|
return matches.pop().name;
|
|
}; |