How to detect file encoding in NodeJS?
I don't think there is a "native Node.js function" that can do this.
The simplest solution I know is using an npm module like detect-file-encoding-and-language. As long as the input file is not too small it should work fine.
// Install plugin using npm
$ npm install detect-file-encoding-and-language
// Sample code
const languageEncoding = require("detect-file-encoding-and-language");
const pathToFile = "/home/username/documents/my-text-file.txt"
languageEncoding(pathToFile).then(fileInfo => console.log(fileInfo));
// Possible result: { language: japanese, encoding: Shift-JIS, confidence: { language: 0.97, encoding: 0.97 } }
You can use an npm module that does exactly this: https://www.npmjs.com/package/detect-character-encoding
You can use it like this:
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
// }