ringkasan:
Baru -baru ini, saya mengalami masalah ketika saya membuat 'kode dokumen' manual. Setelah memeriksa file, saya menemukan bahwa pengkodean file salah, dengan total lebih dari 100 file. Jika saya menyimpannya sebagai UTF8 dengan editor, itu akan menyedihkan. Jadi saya menulis program sendiri untuk Batch memodifikasi format pengkodean file.
Kode:
Salinan kode adalah sebagai berikut:
/**
* Ubah format pengkodean file, misalnya: GBK ke UTF8
* Mendukung Direktori Multi-Level
* @param {string} [root_path] [path file yang perlu ditranskode]
* @param {array} [file_type] [format file yang membutuhkan transcoding, seperti file html]
* @param {string} [from_code] [File Encode]
* @param {string} [to_code] [pengkodean target file]
*/
// Perkenalkan paket
var fs = membutuhkan ('fs'),
iconv = membutuhkan ('iconv-lite');
// Variabel global
var root_path = './html',
file_type = ['html', 'htm'],
from_code = 'gbk',
to_code = 'utf8';
/**
* Tentukan apakah elemen tersebut ada di array
* @Date 2015-01-13
* @param {[string]} elem [elemen sedang dicari]
* @return {[bool]} [deskripsi]
*/
Array.prototype.inarray = function (elem) {
"Gunakan ketat";
var l = this.length;
while (l--) {
if (this [l] === elem) {
Kembali Benar;
}
}
mengembalikan false;
};
/**
* Fungsi transkoding
* @Date 2015-01-13
* @param {[string]} root [direktori file yang dikodekan]
* @return {[type]} [deskripsi]
*/
fungsi encodefiles (root) {
"Gunakan ketat";
var file = fs.readdirsync (root);
file.foreach (function (file) {
var pathname = root + '/' + file,
stat = fs.lstatsync (pathname);
if (! stat.isdirectory ()) {
var name = file.toString ();
if (! file_type.inarray (name.substring (name.LastIndexof ('.') + 1))) {
kembali;
}
fs.writeFile (pathname, iconv.decode (fs.readfileSync (pathname), from_code), {
Pengkodean: to_code
}, function (err) {
if (err) {
Lempar err;
}
});
} kalau tidak {
encodefiles (pathname);
}
});
}
encodefiles (root_path);
ringkasan:
Program di atas mendukung direktori multi-level, dan file yang sama tidak dapat dioperasikan beberapa kali, jika tidak kode kacau akan muncul lagi.
Kode lengkap: https://github.com/baixuexiyang/coding, Anda dapat memasukkannya ke akun Anda. Jika ada bug, silakan hubungi masalah ini.
Bukankah itu sangat bagus? Saya harap Anda menyukainya. Jika Anda memiliki pertanyaan, tinggalkan pesan.