Maison >interface Web >js tutoriel >Comment modifier par lots le format d'encodage de fichier dans les compétences javascript_javascript

Comment modifier par lots le format d'encodage de fichier dans les compétences javascript_javascript

WBOY
WBOYoriginal
2016-05-16 16:18:041359parcourir

L'exemple de cet article décrit la méthode de modification par lots du format d'encodage du fichier avec JavaScript. Partagez-le avec tout le monde pour votre référence. Les détails sont les suivants :

Résumé :

Récemment, alors que je rédigeais un manuel, j'ai rencontré un problème de "documents tronqués". Après avoir vérifié les fichiers, j'ai découvert que l'encodage des fichiers était erroné. Il y avait plus de 100 fichiers au total. J'ai utilisé un éditeur pour les enregistrer au format utf8. J'ai donc écrit un programme pour modifier le format d'encodage des fichiers par lots.

Code :

Copier le code Le code est le suivant :
/**
* 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]
​*/

//Pack d'introduction
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.
Le code complet peut être téléchargé depuis ce site en cliquant ici.

J'espère que cet article sera utile à la conception de la programmation JavaScript de chacun.

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