javascript批量修改文件编码格式的方法


Posted in Javascript onJanuary 27, 2015

本文实例讲述了javascript批量修改文件编码格式的方法。分享给大家供大家参考。具体如下:

摘要:

最近在制作手册的时候遇到了一个问题'文档乱码',查看文件之后发现文件编码不对,总共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 [被查找的元素]

 * @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程序设计有所帮助。

Javascript 相关文章推荐
身份证号码前六位所代表的省,市,区, 以及地区编码下载
Apr 12 Javascript
javascript Ext JS 状态默认存储时间
Feb 15 Javascript
js 利用image对象实现图片的预加载提高访问速度
Mar 29 Javascript
js将当前时间格式转换成时间搓(自写)
Sep 26 Javascript
无限树Jquery插件zTree的常用功能特性总结
Sep 11 Javascript
跟我学习javascript的循环
Nov 18 Javascript
jQuery移动页面开发中的触摸事件与虚拟鼠标事件简介
Dec 03 Javascript
jQuery基于json与cookie实现购物车的方法
Apr 15 Javascript
原生js更改css样式的两种方式
Mar 15 Javascript
vue 使用html2canvas将DOM转化为图片的方法
Sep 11 Javascript
微信小程序实现定位及到指定位置导航的示例代码
Aug 20 Javascript
Vue移动端实现图片上传及超过1M压缩上传
Dec 23 Javascript
JavaScript中的包装对象介绍
Jan 27 #Javascript
浅谈JSON中stringify 函数、toJosn函数和parse函数
Jan 26 #Javascript
浅谈JavaScript Math和Number对象
Jan 26 #Javascript
js判断一个字符串是否包含一个子串的方法
Jan 26 #Javascript
javascript中Object使用详解
Jan 26 #Javascript
JQuery中的事件及动画用法实例
Jan 26 #Javascript
javascript折半查找详解
Jan 26 #Javascript
You might like
php_xmlhttp 乱码问题解决方法
2009/08/07 PHP
解析php DOMElement 操作xml 文档的实现代码
2013/05/10 PHP
关于编写性能高效的javascript事件的技术
2014/11/28 Javascript
JavaScript使用pop方法移除数组最后一个元素用法实例
2015/04/06 Javascript
javaScript实现滚动新闻的方法
2015/07/30 Javascript
详解js中构造流程图的核心技术JsPlumb
2015/12/08 Javascript
浅谈AngularJS中ng-class的使用方法
2016/11/11 Javascript
利用vue-router实现二级菜单内容转换
2016/11/30 Javascript
Angularjs通过指令监听ng-repeat渲染完成后执行脚本的方法
2016/12/31 Javascript
深入理解Javascript中的valueOf与toString
2017/01/04 Javascript
js实现随机点名系统(实例讲解)
2017/10/18 Javascript
详解解决使用axios发送json后台接收不到的问题
2018/06/27 Javascript
搭建vue开发环境
2018/07/19 Javascript
解决vue-router 嵌套路由没反应的问题
2020/09/22 Javascript
使用python获取csv文本的某行或某列数据的实例
2018/04/03 Python
Python 实现两个服务器之间文件的上传方法
2019/02/13 Python
Python数据可视化实现正态分布(高斯分布)
2019/08/21 Python
Python判断三段线能否构成三角形的代码
2020/04/12 Python
python如何删除文件、目录
2020/06/23 Python
利用CSS3参考手册和CSS3代码生成工具加速来学习网页制
2012/07/11 HTML / CSS
HTML5新特性 多线程(Worker SharedWorker)
2017/04/24 HTML / CSS
意大利团购网站:Groupon意大利
2016/10/11 全球购物
英国领先的运动营养品牌:Protein Dynamix
2018/01/02 全球购物
美国隐形眼镜零售商:LensPure
2019/03/10 全球购物
Groupon西班牙官方网站:在线优惠券和交易,节省高达70%
2021/03/13 全球购物
优秀求职自荐信怎样写
2013/12/18 职场文书
超市端午节活动方案
2014/01/23 职场文书
《最可爱的人》教学反思
2014/02/14 职场文书
《沙漠中的绿洲》教学反思
2014/04/24 职场文书
司法建议书范文
2014/05/13 职场文书
项目合作意向书模板
2014/07/29 职场文书
2014年社区妇联工作总结
2014/12/02 职场文书
公司门卫岗位职责
2015/04/13 职场文书
业务内勤岗位职责
2015/04/13 职场文书
自荐信范文
2019/05/20 职场文书
SpringBoot整合MongoDB的实现步骤
2021/06/23 MongoDB