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 相关文章推荐
用 JSON 处理缓存
Apr 27 Javascript
用javascript getComputedStyle获取和设置style的原理
Oct 10 Javascript
innerText和textContent对比及使用介绍
Feb 27 Javascript
javascript阻止scroll事件多次执行的思路及实现
Nov 08 Javascript
JavaScript声明变量时为什么要加var关键字
Sep 29 Javascript
jquery+css实现的红色线条横向二级菜单效果
Aug 22 Javascript
简介AngularJS中$http服务的用法
Feb 06 Javascript
js中获取 table节点各tr及td的内容简单实例
Oct 14 Javascript
基于百度地图实现产品销售的单位位置查看功能设计与实现
Oct 21 Javascript
bootstrap-table组合表头的实现方法
Sep 07 Javascript
js Date()日期函数浏览器兼容问题解决方法
Sep 12 Javascript
jqueryUI tab标签页代码分享
Oct 09 jQuery
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 编程安全性小结
2010/01/08 PHP
PHP错误Cannot use object of type stdClass as array in错误的解决办法
2014/06/12 PHP
ThinkPHP 表单自动验证运用示例
2014/10/13 PHP
将FCKeditor导入PHP+SMARTY的实现方法
2015/01/15 PHP
PHP基于面向对象封装的分页类示例
2019/03/15 PHP
PHP中define() 与 const定义常量的区别详解
2019/06/25 PHP
toString()一个会自动调用的方法
2010/02/08 Javascript
JavaScript 构造函数 面相对象学习必备知识
2010/06/09 Javascript
jQuery实现的倒计时效果实例小结
2016/04/16 Javascript
javascript中Date对象应用之简易日历实现
2016/07/12 Javascript
AngularJS之依赖注入模拟实现
2016/08/19 Javascript
H5手机端多文件上传预览插件
2017/04/21 Javascript
详解VueRouter进阶之导航钩子和路由元信息
2017/09/13 Javascript
vue点击input弹出带搜索键盘并监听该元素的方法
2018/08/25 Javascript
浅谈Three.js截图并下载的大坑
2019/11/01 Javascript
three.js中多线程的使用及性能测试详解
2021/01/07 Javascript
Python生成随机验证码的两种方法
2015/12/22 Python
OpenCV-Python 摄像头实时检测人脸代码实例
2019/04/30 Python
python验证身份证信息实例代码
2019/05/06 Python
OpenCV 边缘检测
2019/07/10 Python
Django 静态文件配置过程详解
2019/07/23 Python
详解Django中的FBV和CBV对比分析
2021/03/01 Python
美国背景检查、公共记录和人物搜索网站:BeenVerified
2018/02/25 全球购物
新加坡网上花店:FlowerAdvisor新加坡
2018/10/05 全球购物
全球异乡人的跨境社交电商平台:Kouhigh口嗨网
2020/07/24 全球购物
Yahoo-PHP面试题3
2012/01/14 面试题
一个C/C++编程面试题
2013/11/10 面试题
计算机专业应届毕业生自荐信
2013/09/26 职场文书
连锁经营管理专业大学生求职信
2013/10/30 职场文书
学生安全教育材料
2014/02/14 职场文书
国培远程培训感言
2014/03/08 职场文书
人民教师求职自荐信
2014/03/12 职场文书
创建文明城市标语
2014/06/16 职场文书
舌尖上的中国观后感
2015/06/02 职场文书
2016干部作风整顿心得体会
2016/01/22 职场文书
2020年个人安全保证书参考模板
2020/01/08 职场文书