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 Prototype对象
Jan 07 Javascript
jQuery 标题的自动翻转实现代码
Oct 14 Javascript
学习从实践开始之jQuery插件开发 菜单插件开发
May 03 Javascript
js实现仿百度瀑布流的方法
Feb 05 Javascript
javascript实现在线客服效果
Jul 15 Javascript
jQuery formValidator表单验证
Jan 07 Javascript
Bootstrap基本组件学习笔记之input输入框组(9)
Dec 07 Javascript
原生js实现回复评论功能
Jan 18 Javascript
Vue.js简易安装和快速入门(第二课)
Oct 17 Javascript
vue 1.x 交互实现仿百度下拉列表示例
Oct 21 Javascript
vue中使用axios post上传头像/图片并实时显示到页面的方法
Sep 27 Javascript
详解vue beforeEach 死循环问题解决方法
Feb 25 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调用三种数据库的方法(3)
2006/10/09 PHP
PHP的MVC模式实现原理分析(一相简单的MVC框架范例)
2014/04/29 PHP
JQuery与iframe交互实现代码
2009/12/24 Javascript
JavaScript异步加载浅析
2014/12/28 Javascript
JavaScript弹出新窗口后向父窗口输出内容的方法
2015/04/06 Javascript
JavaScript为事件句柄绑定监听函数实例详解
2015/12/15 Javascript
BootStrap点击下拉菜单项后显示一个新的输入框实现代码
2016/05/16 Javascript
jQuery表单事件实例代码分享
2016/08/18 Javascript
jQuery中map函数的两种方式
2017/04/07 jQuery
详解Node.js 中使用 ECDSA 签名遇到的坑
2018/11/26 Javascript
nodejs分离html文件里面的js和css的方法
2019/04/09 NodeJs
基于iview的router常用控制方式
2019/05/30 Javascript
vue cli4.0项目引入typescript的方法
2020/07/17 Javascript
Python中类的定义、继承及使用对象实例详解
2015/04/30 Python
python 将md5转为16字节的方法
2018/05/29 Python
Kali Linux安装ipython2 和 ipython3的方法
2019/07/11 Python
Django后端发送小程序微信模板消息示例(服务通知)
2019/12/17 Python
手把手教你安装Windows版本的Tensorflow
2020/03/26 Python
浅谈Pycharm的项目文件名是红色的原因及解决方式
2020/06/01 Python
Python SMTP配置参数并发送邮件
2020/06/16 Python
使用python修改文件并立即写回到原始位置操作(inplace读写)
2020/06/28 Python
Python实现加密的RAR文件解压的方法(密码已知)
2020/09/11 Python
CSS3 Notes: -webkit-box-reflect实现倒影的实例
2016/12/08 HTML / CSS
HTML5 Canvas——用路径描画线条实例介绍
2013/06/09 HTML / CSS
美国手机支架公司:PopSockets
2019/11/27 全球购物
给排水工程师岗位职责
2013/11/21 职场文书
团队精神演讲稿
2013/12/31 职场文书
初中化学教学反思
2014/01/23 职场文书
区优秀教师事迹材料
2014/02/10 职场文书
事务机电主管工作职责
2014/02/25 职场文书
前处理组长岗位职责
2014/03/01 职场文书
药剂专业求职信
2014/06/20 职场文书
四年级学生期末评语
2014/12/26 职场文书
创业分两种人:那么哪些适合创业?,哪些适合不适合创业呢?
2019/08/23 职场文书
Python Pandas模块实现数据的统计分析的方法
2021/06/24 Python
Moment的feature导致线上bug解决分析
2022/09/23 Javascript