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 相关文章推荐
prototype 1.5 & scriptaculous 1.6.1 学习笔记
Sep 07 Javascript
js 多浏览器分别判断代码
Apr 01 Javascript
固定网页背景图同时保持图片比例的思路代码
Aug 15 Javascript
JS实现局部选择打印和局部不选择打印
Apr 03 Javascript
js+css实现tab菜单切换效果的方法
Jan 20 Javascript
DOM基础教程之事件对象
Jan 20 Javascript
利用Angularjs和bootstrap实现购物车功能
Aug 31 Javascript
JavaScript中的toString()和toLocaleString()方法的区别
Feb 15 Javascript
详解vue移动端日期选择组件
Feb 22 Javascript
详解vue-cli脚手架中webpack配置方法
Aug 22 Javascript
windows实现npm和cnpm安装步骤
Oct 24 Javascript
vue 实现超长文本截取,悬浮框提示
Jul 29 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
CodeIgniter图像处理类的深入解析
2013/06/17 PHP
浅谈使用 PHP 进行手机 APP 开发(API 接口开发)
2014/08/11 PHP
PHP获取数组的键与值方法小结
2015/06/13 PHP
php语言的7种基本的排序方法
2020/12/28 PHP
Zend Framework+smarty用法实例详解
2016/03/19 PHP
js资料prototype 属性
2007/03/13 Javascript
js获取图片长和宽度的代码
2009/11/24 Javascript
基于jquery的多彩百分比 动态进度条 投票效果显示效果实现代码
2011/08/28 Javascript
JS 表单验证大全
2011/11/23 Javascript
Javascript中的delete操作符详细介绍
2014/06/06 Javascript
jQuery基于json与cookie实现购物车的方法
2016/04/15 Javascript
详解微信小程序中的页面代码中的模板的封装
2017/10/12 Javascript
详解基于node.js的脚手架工具开发经历
2019/01/28 Javascript
python 正则式使用心得
2009/05/07 Python
二种python发送邮件实例讲解(python发邮件附件可以使用email模块实现)
2013/12/03 Python
Python合并多个Excel数据的方法
2018/07/16 Python
Pycharm设置utf-8自动显示方法
2019/01/17 Python
python和pywin32实现窗口查找、遍历和点击的示例代码
2020/04/01 Python
2分钟教你实现环形/扇形菜单(基础版)
2020/01/15 HTML / CSS
美国卡车、吉普车和SUV零件网站:4 Wheel Parts
2016/11/24 全球购物
舒适的豪华鞋:Taryn Rose
2018/05/03 全球购物
为您搜罗全球潮流時尚品牌:HBX
2019/12/04 全球购物
会计岗位描述
2014/02/22 职场文书
2014年师德承诺书
2014/05/23 职场文书
大学生个人求职信
2014/06/02 职场文书
优秀中职教师事迹材料
2014/08/26 职场文书
建设办主任四风问题整改思路和措施
2014/09/20 职场文书
个人借款协议书范本
2014/11/17 职场文书
赔偿协议书怎么写
2015/01/28 职场文书
尼克胡哲观后感
2015/06/08 职场文书
初婚未育证明样本
2015/06/18 职场文书
青年志愿者活动感想
2015/08/07 职场文书
python利用pandas分析学生期末成绩实例代码
2021/07/09 Python
sql通过日期判断年龄函数的示例代码
2021/07/16 SQL Server
关于Spring配置文件加载方式变化引发的异常详解
2022/01/18 Java/Android
如何利用React实现图片识别App
2022/02/18 Javascript