javascript大量にファイルの符号化フォーマットを修正する方法

2308 ワード

本論文の例は、Javascriptがファイルの符号化フォーマットを一括的に修正する方法を説明する.皆さんの参考にしてください.具体的には以下の通りです
要約:
最近マニュアルを作る時に「文書の文字化け」という問題がありました.ファイルを見てから、ファイルのコードが正しくないことに気づきました.全部で100個以上のファイルがエディタでutf 8と保存されたら、悲しいです.ですから、自分でプログラムを書いて、ファイルのコードフォーマットを大量に修正しました.
コード:

   /** 
  
 * , :GBK UTF8
 *
 * @param {String} [root_path] [ ]
 * @param {Array}  [file_type] [ , html ]
 * @param {String} [from_code] [ ]
 * @param {String} [to_code]   [ ]
 */

//
var fs = require('fs'),
  iconv = require('iconv-lite');

//
var root_path = './html',
    file_type = ['html', 'htm'],
    from_code = 'GBK',
    to_code   = 'UTF8';

/**
 *
 * @date   2015-01-13
 * @param  {[String]}   elem [ ]
 * @return {[bool]}        [description]
 */
Array.prototype.inarray = function(elem) {
  "use strict";
  var l = this.length;
  while (l--) {
    if (this[l] === elem) {
      return true;
    }
  }
  return false;
};

/**
 *
 * @date   2015-01-13
 * @param  {[String]}   root [ ]
 * @return {[type]}        [description]
 */
function encodeFiles(root) {
  "use strict";
  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))) {
        return;
      }
      fs.writeFile(pathname, iconv.decode(fs.readFileSync(pathname), from_code), {
        encoding: to_code
      }, function(err) {
        if (err) {
          throw err;
        }
      });
    } else {
      encodeFiles(pathname);
    }
  });
}
encodeFiles(root_path);

リボン:
上のプログラムはマルチレベルのディレクトリをサポートしています.同じファイルは何回も操作できません.でないと、文字化けが発生します.完全コードはここをクリックしてダウンロードできます.
本論文で述べたように、皆さんのjavascriptプログラムの設計に役に立ちます.