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 import css实例代码
Jul 18 Javascript
javaScript Array(数组)相关方法简述
Jul 25 Javascript
小米公司JavaScript面试题
Dec 29 Javascript
jquery实现漫天雪花飞舞的圣诞祝福雪花效果代码分享
Aug 20 Javascript
javascript表单事件处理方法详解
May 15 Javascript
微信小程序之picker日期和时间选择器
Feb 09 Javascript
基于jQuery实现文字打印动态效果
Apr 21 jQuery
JavaScript函数apply()和call()用法与异同分析
Aug 10 Javascript
微信小程序实现留言板
Oct 31 Javascript
layui递归实现动态左侧菜单
Jul 26 Javascript
详解node登录接口之密码错误限制次数(含代码)
Oct 25 Javascript
微信小程序转化为uni-app项目的方法示例
May 22 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 数组实例说明
2008/08/18 PHP
php 禁止页面缓存输出
2009/01/07 PHP
php实现的遍历文件夹下所有文件,编辑删除
2010/01/05 PHP
CI框架无限级分类+递归的实现代码
2016/11/01 PHP
laravel 5.4中实现无限级分类的方法示例
2017/07/27 PHP
PHP 中TP5 Request 请求对象的实例详解
2017/07/31 PHP
IE6与IE7中,innerHTML获取param的区别
2009/03/15 Javascript
js实现表格字段排序
2014/02/19 Javascript
jquery选择器原理介绍($()使用方法)
2014/03/25 Javascript
jquery实现带二级菜单的导航示例
2014/04/28 Javascript
js实现带关闭按钮始终显示在网页最底部工具条的方法
2015/03/02 Javascript
IE10中flexigrid无法显示数据的解决方法
2015/07/26 Javascript
基于jQuery Bar Indicator 插件实现进度条展示效果
2015/09/30 Javascript
15个常用的jquery代码片段
2015/12/19 Javascript
JS清除文本框内容离开在恢复及鼠标离开文本框时触发js的方法
2016/01/12 Javascript
js实现字符全排列算法的简单方法
2017/05/01 Javascript
angularjs封装$http为factory的方法
2017/05/18 Javascript
js实现本地时间同步功能
2017/08/26 Javascript
[js高手之路]从原型链开始图解继承到组合继承的产生详解
2017/08/28 Javascript
jQuery实现图片简单轮播功能示例
2018/08/13 jQuery
Vue组件间通信方法总结(父子组件、兄弟组件及祖先后代组件间)
2019/04/17 Javascript
Vue多环境代理配置方法思路详解
2019/06/21 Javascript
JS eval代码快速解密实例解析
2020/04/23 Javascript
Python命名空间详解
2014/08/18 Python
Python+matplotlib实现填充螺旋实例
2018/01/15 Python
Python使用functools实现注解同步方法
2018/02/06 Python
Python中 传递值 和 传递引用 的区别解析
2018/02/22 Python
为什么你还不懂得怎么使用Python协程
2019/05/13 Python
Python实现微信好友的数据分析
2019/12/16 Python
Pytorch释放显存占用方式
2020/01/13 Python
给老婆的搞笑检讨书
2014/01/12 职场文书
应届生简历中的自我评价
2014/01/13 职场文书
异地年检委托书范本
2014/09/24 职场文书
校园安全广播稿范文
2014/09/25 职场文书
2015年中秋节演讲稿
2015/03/20 职场文书
基于Python实现西西成语接龙小助手
2022/08/05 Golang