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 Excel操作知识点
Apr 24 Javascript
制作高质量的JQuery Plugin 插件的方法
Apr 20 Javascript
javascript实现动态侧边栏代码
Feb 19 Javascript
JQuery中Ajax的操作完整例子
Mar 07 Javascript
React/Redux应用使用Async/Await的方法
Nov 16 Javascript
浅谈vue方法内的方法使用this的问题
Sep 15 Javascript
教你使用vue-cli快速构建的小说阅读器
May 13 Javascript
解决axios post 后端无法接收数据的问题
Oct 29 Javascript
如何优雅地取消 JavaScript 异步任务
Mar 22 Javascript
vue 子组件和父组件传值的示例
Sep 11 Javascript
JavaScript实现简易计算器小功能
Oct 22 Javascript
JavaScript手写数组的常用函数总结
Nov 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
Syphon 使用方法
2021/03/03 冲泡冲煮
解析php5配置使用pdo
2013/07/03 PHP
destoon之一键登录设置
2014/06/21 PHP
php socket实现的聊天室代码分享
2014/08/16 PHP
Yii2实现ajax上传图片插件用法
2016/04/28 PHP
php实现文件与16进制相互转换的方法示例
2017/02/16 PHP
PHP中使用mpdf 导出PDF文件的实现方法
2018/10/22 PHP
用nodejs写的一个简单项目打包工具
2013/05/11 NodeJs
js正文内容高亮效果的实现方法
2013/06/30 Javascript
jQuery中:has选择器用法实例
2014/12/30 Javascript
在Linux系统中搭建Node.js开发环境的简单步骤讲解
2016/01/26 Javascript
js+html5实现canvas绘制椭圆形图案的方法
2016/05/21 Javascript
详解JavaScript中双等号引起的隐性类型转换
2016/05/30 Javascript
AngularJS的ng-repeat指令与scope继承关系实例详解
2017/01/21 Javascript
使用JS组件实现带ToolTip验证框的实例代码
2017/08/23 Javascript
关于jquery中attr()和prop()方法的区别
2018/05/28 jQuery
微信JS-SDK updateAppMessageShareData安卓不能自定义分享详解
2019/03/29 Javascript
微信小程序上线发布流程图文详解
2019/05/06 Javascript
vue+element实现表格新增、编辑、删除功能
2019/05/28 Javascript
JavaScript工具库MyTools详解
2020/01/01 Javascript
详解webpack的文件监听实现(热更新)
2020/09/11 Javascript
[01:28]2014DOTA2国际邀请赛中国区预选赛四大豪门直升机抵达会场
2014/05/24 DOTA
[01:32]DOTA2 2015国际邀请赛中国区预选赛第四日战报
2015/05/29 DOTA
[03:17]2016完美“圣”典风云人物:冷冷专访
2016/12/08 DOTA
Linux系统(CentOS)下python2.7.10安装
2018/09/26 Python
python是怎么被发明的
2020/06/15 Python
Python 高效编程技巧分享
2020/09/10 Python
canvas压缩图片以及卡片制作的方法示例
2018/12/04 HTML / CSS
美丽乡村建设实施方案
2014/03/23 职场文书
高中教师考核方案
2014/05/18 职场文书
大学生志愿者活动总结
2014/06/27 职场文书
团员年度个人总结
2015/02/26 职场文书
幼儿园保育员随笔
2015/08/14 职场文书
仅用几行Python代码就能复制她的U盘文件?
2021/06/26 Python
Python如何解决secure_filename对中文不支持问题
2021/07/16 Python
nginx location 带斜杠【 / 】与不带的区别
2022/04/13 Servers