Поправка багов
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
function getEncoding(str) {
|
||||
function getEncoding(buf) {
|
||||
const lowerCase = 3;
|
||||
const upperCase = 1;
|
||||
|
||||
@@ -18,17 +18,16 @@ function getEncoding(str) {
|
||||
'm': 0
|
||||
};
|
||||
|
||||
const len = str.len;
|
||||
const len = buf.length;
|
||||
const blockSize = (len > 5*3000 ? 3000 : len);
|
||||
let counter = 0;
|
||||
let i = 0;
|
||||
while (i < len) {
|
||||
const char = str.charCodeAt(i);
|
||||
|
||||
const char = buf[i];
|
||||
i++;
|
||||
//non-russian characters
|
||||
if (char < 128 || char > 256)
|
||||
continue;
|
||||
|
||||
//CP866
|
||||
if ((char > 159 && char < 176) || (char > 223 && char < 242)) charsets['d'] += lowerCase;
|
||||
if ((char > 127 && char < 160)) charsets['d'] += upperCase;
|
||||
@@ -55,14 +54,13 @@ function getEncoding(str) {
|
||||
counter = 0;
|
||||
i += Math.round(len/2 - 2*blockSize);
|
||||
}
|
||||
i++;
|
||||
}
|
||||
|
||||
let sorted = Object.keys(charsets).map(function(key) {
|
||||
return { codePage: codePage[key], c: charsets[key] };
|
||||
});
|
||||
|
||||
sorted.sort((a, b) => a.c - b.c);
|
||||
sorted.sort((a, b) => b.c - a.c);
|
||||
|
||||
return sorted[0].codePage;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user