Résumé :
Récemment, lorsque je rédigeais un manuel, j'ai rencontré un problème de "documents tronqués". Après avoir vérifié les fichiers, j'ai constaté que l'encodage des fichiers était erroné. Il y avait plus de 100 fichiers au total si vous utilisez un éditeur pour les enregistrer. comme utf8, ce serait tragique. J'ai donc écrit un programme pour modifier le format d'encodage des fichiers par lots.
Code :
/**
* Modifier le format d'encodage du fichier, par exemple : GBK vers UTF8
* Prise en charge des répertoires à plusieurs niveaux
* @param {String} [root_path] [Chemin du fichier qui doit être transcodé]
* @param {Array} [file_type] [Format de fichier qui doit être transcodé, tel qu'un fichier html]
* @param {String} [from_code] [Encodage du fichier]
* @param {String} [to_code] [Encodage cible du fichier]
*/
//Présenter le package
var fs = require('fs'),
iconv = require('iconv-lite');
//Variables globales
var root_path = './html',
Type_fichier = ['html', 'htm'],
From_code = 'GBK',
to_code = 'UTF8';
/**
* Déterminer si l'élément est dans le tableau
* @date 2015-01-13
* @param {[String]} elem [l'élément à trouver]
* @return {[bool]} [description]
*/
Array.prototype.inarray = fonction (elem) {
"utiliser strict";
var l = this.length;
tandis que (l--) {
Si (this[l] === elem) {
return true ;
>
>
retourner faux ;
};
/**
* Fonction de transcodage
* @date 2015-01-13
* @param {[String]} racine [répertoire du fichier d'encodage]
* @return {[type]} [description]
*/
fonction encodeFiles (racine) {
"utiliser strict";
var files = fs.readdirSync(root);
fichiers.forEach (fonction (fichier) {
var pathname = fichier racine '/',
stat = fs.lstatSync(chemin);
Si (!stat.isDirectory()) {
var nom = file.toString();
Si (!file_type.inarray(name.substring(name.lastIndexOf('.') 1))) {
revenir ;
>
fs.writeFile(pathname, iconv.decode(fs.readFileSync(pathname), from_code), {
encodage : to_code
}, fonction (erreur) {
Si (erreur) {
lancer une erreur ;
>
});
} autre {
encodeFiles(chemin d'accès);
>
});
>
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 des caractères tronqués apparaîtront.
Code complet : https://github.com/baixuexiyang/coding, vous pouvez le créer sous votre propre compte. S'il y a des bugs, veuillez les signaler sur le problème.
N'est-ce pas très bien ? J'espère que vous l'aimerez tous. Si vous avez des questions, veuillez laisser un message.
Déclaration:Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn