Zusammenfassung:
Als ich kürzlich ein Handbuch erstellte, stieß ich auf ein Problem mit „verstümmelten Dokumenten“. Nachdem ich die Dateien überprüft hatte, stellte ich fest, dass insgesamt mehr als 100 Dateien vorhanden waren als utf8 wäre es tragisch. Also habe ich ein Programm geschrieben, um das Dateikodierungsformat stapelweise zu ändern.
Code:
/**
* Ändern Sie das Dateikodierungsformat, zum Beispiel: GBK zu UTF8
* Unterstützt mehrstufige Verzeichnisse
* @param {String} [root_path] [Dateipfad, der transkodiert werden muss]
* @param {Array} [file_type] [Dateiformat, das transkodiert werden muss, z. B. HTML-Datei]
* @param {String} [from_code] [Dateikodierung]
* @param {String} [to_code] [Zielkodierung der Datei]
*/
//Paket vorstellen
var fs = require('fs'),
iconv = require('iconv-lite');
//Globale Variablen
var root_path = './html',
File_type = ['html', 'htm'],
From_code = 'GBK',
to_code = 'UTF8';
/**
* Bestimmen Sie, ob sich das Element im Array
befindet
* @Datum 13.01.2015
* @param {[String]} elem [das zu findende Element]
* @return {[bool]} [Beschreibung]
*/
Array.prototype.inarray = function(elem) {
„strikt verwenden“;
var l = this.length;
while (l--) {
If (this[l] === elem) {
return true;
}
}
return false;
};
/**
* Transkodierungsfunktion
* @Datum 13.01.2015
* @param {[String]} root [Verzeichnis der Kodierungsdatei]
* @return {[Typ]} [Beschreibung]
*/
Funktion encodeFiles(root) {
„strikt verwenden“;
var files = fs.readdirSync(root);
files.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))) {
zurück;
}
fs.writeFile(pathname, iconv.decode(fs.readFileSync(pathname), from_code), {
Kodierung: to_code
}, Funktion(err) {
Wenn (irrt) {
throw err;
}
});
} sonst {
encodeFiles(pathname);
}
});
}
encodeFiles(root_path);
Zusammenfassung:
Das obige Programm unterstützt mehrstufige Verzeichnisse. Dieselbe Datei kann nicht mehrmals bearbeitet werden, da sonst verstümmelte Zeichen angezeigt werden.
Vollständiger Code: https://github.com/baixuexiyang/coding, Sie können ihn unter Ihrem eigenen Konto teilen. Wenn es Fehler gibt, melden Sie diese bitte über das Problem.
Ist es nicht sehr gut? Ich hoffe, es gefällt euch allen. Wenn ihr Fragen habt, hinterlasst bitte eine Nachricht.