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 10 Javascript
P3P Header解决Cookie跨域的问题
Mar 12 Javascript
JavaScript字符串对象replace方法实例(用于字符串替换或正则替换)
Oct 16 Javascript
JS+CSS实现弹出全屏灰黑色透明遮罩效果的方法
Dec 20 Javascript
jquery mobile 实现自定义confirm确认框效果的简单实例
Jun 17 Javascript
Vue.js每天必学之数据双向绑定
Sep 05 Javascript
Bootstrap基本组件学习笔记之列表组(11)
Dec 07 Javascript
微信小程序 监听手势滑动切换页面实例详解
Jun 15 Javascript
从零开始在NPM上发布一个Vue组件的方法步骤
Dec 20 Javascript
前端js中的事件循环eventloop机制详解
May 15 Javascript
js基础之事件捕获与冒泡原理
Oct 09 Javascript
Vue路由守卫及页面登录权限控制的设置方法(两种)
Mar 31 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编程中八种常见的文件操作方式
2006/11/19 PHP
PHP gbk环境下json_dencode传送来的汉字
2012/11/13 PHP
yii实现使用CUploadedFile上传文件的方法
2015/12/28 PHP
php如何计算两坐标点之间的距离
2018/12/29 PHP
Javascript 调试利器 Firebug使用详解六
2009/07/05 Javascript
Jquery 表单取值赋值的一些基本操作
2009/10/11 Javascript
javascript 延迟加载技术(lazyload)简单实现
2011/01/17 Javascript
浅析jQuery对select操作小结(遍历option,操作option)
2013/07/04 Javascript
javascript 函数及作用域总结介绍
2013/11/12 Javascript
jQuery控制的不同方向的滑动(向左、向右滑动等)
2014/07/18 Javascript
JavaScript中操作字符串小结
2015/05/04 Javascript
jQuery的promise与deferred对象在异步回调中的作用
2016/05/03 Javascript
微信小程序 底部导航栏目开发资料
2016/12/05 Javascript
js 客户端打印html 并且去掉页眉、页脚的实例
2017/11/03 Javascript
Vue 页面权限控制和登陆验证功能的实例代码
2019/06/20 Javascript
el-table表头根据内容自适应完美解决表头错位和固定列错位
2021/01/07 Javascript
[01:29]Ti4循环赛第三日精彩回顾
2014/07/13 DOTA
python使用正则搜索字符串或文件中的浮点数代码实例
2014/07/11 Python
Python使用PyGreSQL操作PostgreSQL数据库教程
2014/07/30 Python
详解python 中in 的 用法
2019/12/12 Python
Python实现结构体代码实例
2020/02/10 Python
python GUI库图形界面开发之PyQt5时间控件QTimer详细使用方法与实例
2020/02/26 Python
解决pytorch下出现multi-target not supported at的一种可能原因
2021/02/06 Python
Html5页面内使用JSON动画的实现
2019/01/29 HTML / CSS
欧洲最古老的鞋厂:Peter Kaiser
2019/11/05 全球购物
面向对象编程的优势是什么
2015/12/17 面试题
花店创业计划书范文
2014/02/07 职场文书
优秀团支部事迹材料
2014/02/08 职场文书
党员公开承诺书内容
2014/05/20 职场文书
党员评议自我评价
2015/03/03 职场文书
2015年大学生实习评语
2015/03/25 职场文书
挂职锻炼工作总结2015
2015/05/28 职场文书
新西兰:最新留学学习计划书写作指南
2019/07/15 职场文书
Navicat for MySQL的使用教程详解
2021/05/27 MySQL
spring注解 @PropertySource配置数据源全流程
2022/03/25 Java/Android
最新动漫情报:2022年7月新番定档超过30部, OVERLORD骨王第四季也在其中噢
2022/05/04 日漫