Ringkasan:
Baru-baru ini, semasa saya membuat manual, saya menghadapi masalah "dokumen bercelaru". sebagai utf8, ia akan menjadi tragis. Jadi saya menulis program untuk mengubah suai format pengekodan fail dalam kelompok.
Kod:
/**
* Ubah suai format pengekodan fail, contohnya: GBK kepada UTF8
* Menyokong direktori pelbagai peringkat
* @param {String} [root_path] [Laluan fail yang perlu ditranskod]
* @param {Array} [file_type] [Format fail yang perlu ditranskod, seperti fail html]
* @param {String} [from_code] [Pengekodan fail]
* @param {String} [to_code] [Pengekodan sasaran fail]
,*/
//Perkenalkan pakej
var fs = memerlukan('fs'),
iconv = memerlukan('iconv-lite');
//Pembolehubah global
var root_path = './html',
Jenis_fail = ['html', 'htm'],
From_code = 'GBK',
to_code = 'UTF8';
/**
* Tentukan sama ada elemen berada dalam tatasusunan
* @tarikh 2015-01-13
* @param {[String]} elem [elemen untuk ditemui]
* @return {[bool]} [penerangan]
,*/
Array.prototype.inarray = function(elem) {
"gunakan ketat";
var l = ini.panjang;
manakala (l--) {
Jika (ini[l] === elem) {
kembali benar;
}
}
pulangkan palsu;
};
/**
* Fungsi transcoding
* @tarikh 2015-01-13
* @param {[String]} root [mengekodkan direktori fail]
* @return {[type]} [penerangan]
,*/
function encodeFiles(root) {
"gunakan ketat";
var files = fs.readdirSync(root);
files.forEach(function(fail) {
var pathname = root '/' fail,
stat = fs.lstatSync(nama laluan);
Jika (!stat.isDirectory()) {
var name = file.toString();
Jika (!file_type.inarray(name.substring(name.lastIndexOf('.') 1))) {
kembali;
}
fs.writeFile(pathname, iconv.decode(fs.readFileSync(pathname), from_code), {
pengekodan: to_code
}, fungsi(err) {
Jika (err) {
silap buang;
}
});
} lain {
encodeFiles(pathname);
}
});
}
encodeFiles(root_path);
Ringkasan:
Program di atas menyokong direktori berbilang peringkat, dan fail yang sama tidak boleh dikendalikan beberapa kali, jika tidak, aksara yang bercelaru akan muncul.
Kod penuh: https://github.com/baixuexiyang/coding, anda boleh memasukkannya ke akaun anda sendiri Jika terdapat pepijat, sila laporkan mengenai isu tersebut.
Bukankah ini sangat bagus? Saya harap anda semua menyukainya.