Как определить кодировку файла в NodeJS? - PullRequest
0 голосов
/ 26 апреля 2018

Как определить, какая кодировка была определена для файла?

Я хочу что-то вроде этого:

fs.getFileEncoding('C:/path/to/file.txt') // it returns 'UTF-8', 'CP-1252', ...

Есть ли простой способ сделать это, используя встроенную функцию nodejs?

Ответы [ 2 ]

0 голосов
/ 17 мая 2019

Это то, чем я пользуюсь некоторое время. YMMV. Надеюсь, это поможет.


var fs = require('fs');
...
getFileEncoding( f ) {</p>

<pre><code>    var d = new Buffer.alloc(5, [0, 0, 0, 0, 0]);
    var fd = fs.openSync(f, 'r');
    fs.readSync(fd, d, 0, 5, 0);
    fs.closeSync(fd);

    // https://en.wikipedia.org/wiki/Byte_order_mark
    var e = false;
    if ( !e && d[0] === 0xEF && d[1] === 0xBB && d[2] === 0xBF)
        e = 'utf8';
    if (!e && d[0] === 0xFE && d[1] === 0xFF)
        e = 'utf16be';
    if (!e && d[0] === 0xFF && d[1] === 0xFE)
        e = 'utf16le';
    if (!e)
        e = 'ascii';

    return e;

}

0 голосов
/ 26 апреля 2018

Вы можете использовать модуль npm, который делает именно это: https://www.npmjs.com/package/detect-character-encoding

Вы можете использовать это так:

const fs = require('fs');
const detectCharacterEncoding = require('detect-character-encoding');

const fileBuffer = fs.readFileSync('file.txt');
const charsetMatch = detectCharacterEncoding(fileBuffer);

console.log(charsetMatch);
// {
//   encoding: 'UTF-8',
//   confidence: 60
// }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...