const fs = require('fs');
const path = require('path');
const jschardet = require('jschardet');
const iconv = require('iconv-lite');
// 指定需要处理的文件夹路径
const folderPath = 'your_folder_path';
// 递归遍历文件夹
function processFolder(folderPath) {
fs.readdir(folderPath, (err, files) => {
if (err) {
console.error('读取文件夹失败:', err);
return;
}
files.forEach(file => {
const filePath = path.join(folderPath, file);
fs.stat(filePath, (err, stat) => {
if (err) {
console.error('获取文件状态失败:', err);
return;
}
if (stat.isFile()) {
// 处理文件
processFile(filePath);
} else if (stat.isDirectory()) {
// 递归处理子文件夹
processFolder(filePath);
}
});
});
});
}
// 处理文件
function processFile(filePath) {
const extname = path.extname(filePath);
if (extname !== '.txt') {
console.log(filePath, '不是txt文件,跳过编码转换');
return;
}
fs.readFile(filePath, (err, data) => {
if (err) {
console.error('读取文件失败:', err);
return;
}
// 检测文件编码
const detectedEncoding = jschardet.detect(data).encoding;
// 判断文件是否为UTF-8编码
if (detectedEncoding.toLowerCase() === 'utf-8') {
console.log(filePath, '已经是UTF-8编码');
return;
}
// 将文件内容从原编码转换为UTF-8
const content = iconv.decode(data, detectedEncoding);
const utf8Content = iconv.encode(content, 'utf-8');
// 将转换后的内容写入文件
fs.writeFile(filePath, utf8Content, err => {
if (err) {
console.error('写入文件失败:', err);
return;
}
console.log(filePath, '编码修改为UTF-8成功');
});
});
}
// 处理指定的文件夹
processFolder(folderPath);
转载请注明:有爱前端 » node将txt文件格式转为utf8