résumé:
Récemment, j'ai rencontré un problème lorsque je faisais le «code de document» manuel. Après avoir vérifié le fichier, j'ai constaté que le codage du fichier était mauvais, avec plus de 100 fichiers au total. Si je l'enregistre en tant que UTF8 avec l'éditeur, ce serait triste. J'ai donc écrit un programme moi-même pour modifier le format d'encodage du fichier.
Code:
La copie de code est la suivante:
/ **
* Modifiez le format d'encodage du fichier, par exemple: GBK à UTF8
* Prend en charge le répertoire à plusieurs niveaux
* @param {string} [root_path] [chemin de fichier qui doit être transcodé]
* @param {array} [file_type] [Format de fichier qui nécessite un transcodage, tel que le fichier html]
* @param {String} [From_code] [Encodage de fichiers]
* @param {String} [TO_CODE] [Encodage cible du fichier]
* /
// introduire un package
var fs = require ('fs'),
iconv = require ('iconv-lite');
// Variables globales
var root_path = './html',
file_type = ['html', 'htm'],
from_code = 'gbk',
to_code = 'utf8';
/ **
* Déterminez si l'élément est dans le tableau
* @Date 2015-01-13
* @param {[String]} elem [élément étant recherché]
* @return {[bool]} [Description]
* /
Array.prototype.inarray = fonction (elem) {
"Utilisez strict";
var l = this.length;
while (l--) {
if (this [l] === elem) {
Retour Vrai;
}
}
retourne false;
};
/ **
* Fonction de transcodage
* @Date 2015-01-13
* @param {[String]} root [Répertoire de fichiers codé]
* @return {[type]} [Description]
* /
fonction encodefiles (root) {
"Utilisez strict";
var files = fs.readDiRSYnc (root);
files.ForEach (fonction (fichier) {
var pathname = root + '/' + fichier,
stat = fs.lstatSync (pathName);
if (! stat.isdirectory ()) {
var name = file.toString ();
if (! file_type.inArray (name.substring (name.lastIndexof ('.') + 1))) {
retour;
}
fs.writeFile (pathname, iconv.decode (fs.readfilesync (pathname), from_code), {
Encodage: TO_CODE
}, fonction (err) {
if (err) {
lancer err;
}
});
} autre {
EncodeFiles (pathName);
}
});
}
EncodeFiles (root_path);
résumé:
Le programme ci-dessus prend en charge les répertoires à plusieurs niveaux, et le même fichier ne peut pas être utilisé plusieurs fois, sinon le code brouillé réapparaîtra.
Le code complet: https://github.com/baixuexiyang/coding, vous pouvez le fourrer sur votre compte. S'il y a un bogue, veuillez le contacter sur la question.
N'est-ce pas très bon? J'espère que vous l'aimez. Si vous avez des questions, laissez un message.