まとめ:
最近、マニュアル「ドキュメントコード」を作成しているときに問題が発生しました。ファイルをチェックした後、ファイルエンコードが間違っており、合計100を超えるファイルがあることがわかりました。エディターと一緒にUTF8として保存すれば、悲しいでしょう。そこで、ファイルエンコード形式をバッチ変更するプログラムを自分で書きました。
コード:
コードコピーは次のとおりです。
/**
*ファイルエンコーディング形式を変更するなど: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 [lething reaused] elem [要素]
* @return {[bool]} [説明]
*/
array.prototype.inarray = function(elem){
「Strictを使用」;
var l = this.length;
while(l-){
if(this [l] === elem){
trueを返します。
}
}
falseを返します。
};
/**
*トランスコーディング関数
* @date 2015-01-13
* @param {[string]} root [エンコードされたファイルディレクトリ]
* @return {[type]} [説明]
*/
関数encodeFiles(root){
「Strictを使用」;
var files = fs.readdirsync(root);
files.foreach(function(file){
var pathname = root + '/' +ファイル、
stat = fs.lstatsync(pathname);
if(!stat.isdirectory()){
var name = file.toString();
if(!file_type.inarray(name.substring(name.lastindexof( '。') + 1)){){
戻る;
}
fs.writefile(pathname、iconv.decode(fs.readfilesync(pathname)、from_code)、{
エンコード:to_code
}、function(err){
if(err){
エラーを投げます。
}
});
} それ以外 {
encodefiles(pathname);
}
});
}
encodefiles(root_path);
まとめ:
上記のプログラムはマルチレベルのディレクトリをサポートしており、同じファイルを複数回操作することはできません。それ以外の場合は、Garled Codeが再び表示されます。
完全なコード:https://github.com/baixuexiyang/coding、アカウントにフォークできます。バグがある場合は、問題についてお問い合わせください。
とてもいいですか?気に入っていただければ幸いです。ご質問がある場合は、メッセージを残してください。