javascript批量修改文件编码格式的方法
本文实例讲述了javascript批量修改文件编码格式的方法。分享给大家供大家参考。具体如下:
摘要:
最近在制作手册的时候遇到了一个问题'文档乱码',查看文件之后发现文件编码不对,总共100多个文件,如果用编辑器另存为utf8,那就悲催了。所以自己就写了个程序,批量修改文件编码格式。
代码:
/** *修改文件编码格式,例如:GBK转UTF8 *支持多级目录 *@param{String}[root_path][需要进行转码的文件路径] *@param{Array} [file_type][需要进行转码的文件格式,比如html文件] *@param{String}[from_code][文件的编码] *@param{String}[to_code] [文件的目标编码] */
//引入包 varfs=require('fs'), iconv=require('iconv-lite');
//全局变量 varroot_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){ "usestrict"; varl=this.length; while(l--){ if(this[l]===elem){ returntrue; } } returnfalse; };
/** *转码函数 *@date 2015-01-13 *@param {[String]} root[编码文件目录] *@return{[type]} [description] */ functionencodeFiles(root){ "usestrict"; varfiles=fs.readdirSync(root); files.forEach(function(file){ varpathname=root+'/'+file, stat=fs.lstatSync(pathname); if(!stat.isDirectory()){ varname=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){ throwerr; } }); }else{ encodeFiles(pathname); } }); } encodeFiles(root_path);