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 相关文章推荐
初学JavaScript第二章
Sep 30 Javascript
jQuery中prevAll()方法用法实例
Jan 08 Javascript
js实现星星打分效果的方法
Jul 05 Javascript
vue开发心得和技巧分享
Oct 27 Javascript
详解Vue中使用v-for语句抛出错误的解决方案
May 04 Javascript
vue.js中Vue-router 2.0基础实践教程
May 08 Javascript
Node.js+Express+MySql实现用户登录注册功能
Jul 10 Javascript
jquery实现左右轮播图效果
Sep 28 jQuery
js最简单的双向绑定实例讲解
Jan 02 Javascript
更强大的vue ssr实现预取数据的方式
Jul 19 Javascript
javascript导出csv文件(excel)的方法示例
Aug 25 Javascript
Angular8 实现table表格表头固定效果
Jan 03 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面向对象程序设计之对象生成方法详解
2016/12/02 PHP
thinkPHP数据查询常用方法总结【select,find,getField,query】
2017/03/15 PHP
如何在Mozilla Gecko 用Javascript加载XSL
2007/01/09 Javascript
jQuery 剧场版 你必须知道的javascript
2009/05/27 Javascript
javascript 异常处理使用总结
2009/06/21 Javascript
XMLHTTP 乱码的解决方法(UTF8,GB2312 编码 解码)
2011/01/12 Javascript
jQuery遍历之next()、nextAll()方法使用实例
2014/11/08 Javascript
浅谈javascript中for in 和 for each in的区别
2015/04/23 Javascript
jquery实现的代替传统checkbox样式插件
2015/06/19 Javascript
javascript实现跨域的方法汇总
2015/06/25 Javascript
jquery.cookie.js用法实例详解
2015/12/25 Javascript
js修改onclick动作的四种方法(推荐)
2016/08/18 Javascript
Angular表格神器ui-grid应用详解
2017/09/29 Javascript
Js判断H5上下滑动方向及滑动到顶部和底部判断的示例代码
2017/11/15 Javascript
Node.js 的 GC 机制详解
2019/06/03 Javascript
微信小程序点击滚动到指定位置的实现
2020/05/22 Javascript
javascript实现前端分页功能
2020/11/26 Javascript
在Python中使用异步Socket编程性能测试
2014/06/25 Python
跟老齐学Python之dict()的操作方法
2014/09/24 Python
详解Python的collections模块中的deque双端队列结构
2016/07/07 Python
使用python判断你是青少年还是老年人
2018/11/29 Python
Python解析、提取url关键字的实例详解
2018/12/17 Python
对Pycharm创建py文件时自定义头部模板的方法详解
2019/02/12 Python
python面试题Python2.x和Python3.x的区别
2019/05/28 Python
opencv调整图像亮度对比度的示例代码
2019/09/27 Python
flask框架蓝图和子域名配置详解
2020/01/25 Python
python GUI库图形界面开发之PyQt5布局控件QHBoxLayout详细使用方法与实例
2020/03/06 Python
巴西补充剂和维生素购物网站:Natue
2019/06/17 全球购物
德国家具、照明、家居用品网上商店:Wayfair.de
2020/02/13 全球购物
2019年c语言经典面试题目
2016/08/17 面试题
自我鉴定的范文
2013/10/03 职场文书
会计专业自我鉴定
2014/02/10 职场文书
团队拓展活动方案
2014/08/28 职场文书
2015年质量管理工作总结范文
2015/05/18 职场文书
2015年保险公司个人工作总结
2015/05/22 职场文书
教你用Python matplotlib库制作简单的动画
2021/06/11 Python